atlasgames-repo / fortress-defense

The unity fortress defense project
7 stars 0 forks source link

Doc: Create/Edit Enemies #150

Open m-nt opened 3 months ago

m-nt commented 3 months ago

آدرس: Assets/Atlas games/Prefab/Enemy

انواع دشمنان :

ساختار عمومی دشمنان:

GameObject<Enemy name>: comps: [Transform, Animator, Box Collider 2D, Controller 2D, Check Target Helper, Smart Enemy Grounded, Attack Type<Melee,Range,Throw,Magic>, RigidBody 2D, Give Coint When die, Give Exp When Die, Sorting Group]
childs:
---- GameObject<Check Target>: comps: [Transform]
---- GameObject<Body>: // Different system based on spine or sprite
---- ---- Built in: comps: [Transform, Sprite Renderer]
---- ---- Spine : comps: [Transform, Skeleton mesh, Mesh Renderer, Skeleton Animation] 
---- ---- Sprite: comps: [Transform, Sprite Renderer]
---- ---- ---- <Sprite body parts objects>
---- GameObject<Shadow>: comps: [Transform, Sprite Renderer]
---- GameObject<Damage>: comps: [Transform]
---- GameObject<Target>: comps: [Transform, Sprite Renderer, Enemy Target Selector]

image

توضیحات کلی :

آبجک اول که Enemy name داره، اسم دشمن روشه و comps ها یعنی کامپوننت هایی هست که آبجک داره، هر ---- نشانگر یک لایه داخلی (child) آبجکت اصلی هست. آبجک Body سه مدل مختلف داره بر اساس اینکه مدل ها چطور هست رفتار انیمیشن ها متفاوت میشه، مثلا Built in ها که دشمنان خود پکیج اولیه بازی هست یک آبجک خالی دارن و توی انیمیشن به صورت sprite sheet انیمیت میشن، حالت Sprite یک آبجک root وجود داره که انیمیشن ها از روی اون ساخته میشه و child های این آبجکت اسکلت کاراکتر هست، مدل spine هم یک تک آبجکت هست که با کد Skeleton Animation انیمیشن هایش کنترل میشه، نکته : در حالت spine (102 دشمن) این ها با این که توسط Skeleton Animation کنترل میشن ولی انیماتور روی آبجکت پدر رو دارن برای اینکه کنترلر های حمله از طریق اینیمشن انجام میشه (توضیحات بیشتر در این مورد پایینتر)

توضیحات کد:

بسته به مدل دشمن (Melee, Range, Throw, Magic) آبجک پدر دشمن دارای کد های مربوطه به آن هست مثلا : Melee Attack یا Range Attack هر دشمن ابتدا در Level Enemy Manager یا Endless Wave Generator که برای حالت endless هست ایجاد میشه، در متد SpawnEnemyCo این دشمنان از روی Level که در Game Level Setup وجود داره (همونجایی که لول بازی طراجی میشه و دشمنان اختصاص داده میشه به هر wave ). در متد ُSpawnEnemyCo یکسری ویژگی های دشمن مثل Walk Speed، Health, Damage و ... ویرایش میشه و دشمن ساخته میشه.

توضیحات انیمیشن:

مسیر اصلی انیمیشن آبجک پدر هست که کامپونتت Animator رو داره، در این انیماتور سه لایه وجود داره که هر کدوم انیمیشن های مربوط به خودش رو مدیریت میکنه: در Base Layer: image در این لایه انیمیشن های عادی مثل راه رفتن، Idle و ... کنترل میشه در Attack : image در این لایه انیمیشن حمله کنترل میشه. در Effect : image در این لایه انیمیشن های effect ها مثل یخ زدن آتش گرفتن و ... مدیریت میشه. در Parameters پارامتر های انیمیشن وجود داره که اجرای هر انیمیشن رو مدیریت میکنه : image این پارامتر ها در اجرای هر کدام از چیز هایی که به آن مربوط هست نقش دارند مثلا برای دشمن melee در انیمیشن حمله مورد نظر از پارامتر melee استفاده میشه مثل عکس زیر: image در انیمیشن حمله Event هایی مشابه عکس زیر وجود دارد تا عملکرد حمله در کد کامل شود image

کپی گرفتن از یک دشمن :

بهترین راه برای ساخت یه دشمن جدید کپی کردن یک دشمن است، نکته بسیار مهمی که وجود داره اینه که انیمیشن های مورد نظر را هم کپی کنید در پوشه خود دشمن جدید، نکته، بعد از کپی سازی همچنان Animator اشاره داره به انیماتور دشمن قبلی که باید مجدد تنظیم بشه. نکته، بعد از کپی سازی انیمیشن های درون انیماتور هم مجدد باید تنظیم بشن مثل خود انیماتور. کنته، اگر مدل کاراکتر از melee به چیز دیگری تغییر میکند باید در انیمیشن attack هم event آن از حالت melee به حالت مورد نظر تغییر کند. نکته، در نکته قبلی اگر از انیمیشن کپی برداری نشود کاراکتر قبلی از کار میوفته چون event آن تغییر کرده