بخش دوم آموزش یونیتی متوسطه (آموزش انیمیشن یونیتی)
فهرست مطالب
آخرین به روزرسانی در 21/10/2022
در بخش دوم آموزش متوسطه یونیتی و یکی از جذاب ترین بخش های موجود قرار داریم.
ما در بخش قبلی که بخش اول آموزش متوسطه بود به معرفی Phisics Joints (اتصالات فیزیکی) پرداختیم.
و در واقع در بخش قبلی شما فیزیک دو بعدی در یونیتی را یاد گرفتید.
در این بخش ما قصد آموزش انیمیشن یونیتی را داریم و در ادامه خواهیم گفت که شما با استفاده از این موتور بازی سازی چگونه می توانید انیمیشن های مورد نیاز در بازی را بسازید.
توجه : آموزش های دوره ی متوسطه مستقل از یکدیگر هستند و این آموزش به غیر از آشنایی به مباحث اولیه ی یونیتی پیش نیاز دیگری را ندارد.
مقدمه
به طور کلی بازی های دارای انیمیشن های جذاب تر و بیشتر ، سرگرم کننده تر و کاربر پسند تر نیز هستند.
پس وجود انیمیشن های جذاب درون بازی در بخش های : گیم پلی ، داستان و حتی منوها می تواند بسیار برای کاربران جذاب باشد.
در یونیتی خوشبختانه، Mecanim، سیستم انیمیشن Unity، امکانات زیادی را برای متحرک سازی GameObjects فراهم می کند.
در این آموزش ما یک پروژه ای را کار خواهیم کرد که با پرتاب کیک به سمت یک سری دلقکه متحرک ، اصول انیمیشن سازی را یاد خواهیم داد.
شروع کار
برای شروع کار در ابتدا پروژه starter را دانلود کرده و در Unity باز کنید.
برخی از asset های گرافیکی و صوتی اولیه را به همراه صحنهای در اختیار شما قرار میدهد که به شما امکان میدهد در درجه ی اول کیک را به اطراف پرتاب کنید.
برای اینکه آموزش را راحت تر دنبال کنید ، layout دیفالت را از منوی کشویی در گوشه بالا سمت راست انتخاب کنید.
اکنون Unity باید چیزی شبیه به این باشد :
روی GameScene در Browser پروژه دوبار کلیک کنید، سپس دکمه Play را در بالا فشار دهید تا پروژه starter اجرا شود.
پس زمینه رنگارنگی را خواهید دید.
برای پرتاب یک تکه کیک روی آن کلیک کنید.
این کیک با استفاده از فیزیک ، متحرک است ؛ که بخشی از این آموزش نیست.
در حال حاضر خواهید دید که بخشی از پروژه ی شما آماده است ؛ اما این تازه اول راه است.
Moving Target (هدف متحرک)
در این مرحله ما قصد داریم یک هدف متحرک را بسازیم ؛ که قائدتا طبق سناریوی ما این هدف متحرک یک دلقک می باشد.
با انتخاب Main Camera در Hierarchy و انتخاب GameObject\Align View to Selected از منو، نمای صحنه خود را با نمای دوربین تراز کنید.
Models\Clown را از Browser پروژه به Hierarchy بکشید و رها کنید.
در Inspector، مطمئن شوید که Position روی (0، 0، 0) تنظیم شده است.
Rotation را به (0، 180، 0) تغییر دهید :
زمان ایجاد اولین انیمیشن خود است.
دلقک باید به سمت چپ، سپس به راست و در نهایت به موقعیت شروع خود برگردد.
از منو، Window\Animation را انتخاب کنید.
این نما به شما امکان می دهد انیمیشن ها را ایجاد و دستکاری کنید.
آن را در کنار نمای Console بکشید و رها کنید.
در Hierarchy ، مطمئن شوید که دلقک همچنان در حالت انتخاب قرار دارد.
در نمای انیمیشن، متنی را مشاهده خواهید کرد که می گوید : « To begin animating Clown, create an Animator and an Animation Clip (برای شروع انیمیشن سازی دلقک، یک انیماتور و یک کلیپ انیمیشن بسازید)».
دکمه Create را در زیر فشار دهید.
در file dialog ، MoveHorizontally را به عنوان نام فایل وارد کرده و Save را فشار دهید.
در نتیجه، Unity دو فایل ایجاد می کند: MoveHorizontally.anim و Clown.controller علاوه بر این، یک کامپوننت Animator به دلقک (1) اضافه می کند که به Clown.controller (2) اشاره می کند :
در حال حاضر، فقط باید روی MoveHorizontally تمرکز کنید.
این Animation Clip است که به شما امکان می دهد چندین پراپرتی دلقک خود را متحرک کنید ، مانند:
Position (موقعیت) ، rotation (چرخش) و scale (مقیاس)
- رنگ متریال و شدت نور
- میزان صدا
- و سایر متغیرها در اسکریپت های خودتان
شما این کار را با استفاده از نمای انیمیشن انجام می دهید.
اینکار نسبتاً پیچیده است، بنابراین به مهمترین مناطق نگاهی بیندازید :
لیست Property ها برای افزودن یا حذف Property برای متحرک سازی.
Time Line برای پیش نمایش یا اصلاح یک فریم (نمونه) خاص از Animation Clip.
اعداد مربوط به ثانیه ها و نمونه است، بنابراین 3:14 به معنای 3 ثانیه و 14 نمونه است.
Dope Sheet برای overview از keyframe timing برای چندین properties.
ویرایش یک Animation Clip
چندین روش برای تغییر مقادیر property در یک Animation Clip وجود دارد.
ابتدا property را مستقیماً تغییر دهید تا دلقک به سمت چپ حرکت کند.
در نمای Animation ، روی Add Property کلیک کنید.
از منوی کشویی Transform\Position را انتخاب کرده و روی علامت مثبت کلیک کنید.
در Property ، List Clown را باز کنید : با کلیک بر روی فلش کوچک سمت چپ آن، Position خود را باز کنید.
اکنون موقعیت دارای یک مختصات x، y و z است و این دقیقاً همان چیزی که برای یک بازی سه بعدی انتظار دارید.
بر روی Time Line انیمیشن کلیک کنید و زمانی را در حدود 0:15 انتخاب کنید تا Position دلقک در این زمان در طول انیمیشن تغییر یابد.
در Property List روی عدد بعد از Position.x کلیک کرده و 6- را وارد کنید.
این یک keyframe اضافه می کند که مقدارproperty را در این زمان خاص تغییر می دهد.
توجه : به محض جابجایی playback head در timeline انیمیشن، دکمه ضبط انیمیشن (Animation’s record) فعال شد.
علاوه بر این، دکمههای اصلی پخش Unity قرمز شدند.
این نشان میدهد که همه تغییراتی که اکنون ایجاد میکنید در timeline انیمیشن اعمال میشود، نه برای کل صحنه.
پس از اتمام پیکربندی انیمیشن، حتما از حالت ضبط خارج شوید.
اکنون راه دیگری را برای ویرایش Animation Clip بررسی کنید، این بار با حرکت دادن دلقک به سمت راست.
در Time Line، زمانی را در حدود 0:45 انتخاب کنید.
به Inspector رفته و Position x را روی 6 قرار دهید.
خواهید دید که Unity یک keyframe دیگر به تایم لاین اضافه می کند.
با فشار دادن دکمه play در نمای انیماتور، انیمیشن را پخش کنید.
اگر کمی دقت کنیم خواهیم دید که برای پرتاب کیک حرکت دلقک کمی سریع و برای ما سخت است.
با تنظیم Samples روی 12 این مشکل را برطرف کنید.
انیمیشن را دوباره اجرا کنید.
دلقک اکنون هدف بسیار آسانتری است.
تبریک می گوییم شما با آموزش انیمیشن یونیتی اولین انیمیشن یونیتی خود را ایجاد کردید.
انیمیشن صدا
خب قائدتا وقتی دلقک ضربه می زند، شما می خواهید صدایی پخش کنید.
مطمئن شوید که ابتدا حالت ضبط انیمیشن را متوقف کرده اید، سپس Audio/Splatter را از Browser پروژه بر روی Clown GameObject در Hierarchy بکشید و رها کنید.
دلقک را در Hierarchy انتخاب کنید.
در Inspector، خواهید دید که این یک کامپوننت Audio Source به دلقک اضافه کرده است.
Audio Source را با کلیک بر روی کادر انتخاب در گوشه سمت چپ بالای آن غیرفعال کنید.
شما فقط می خواهید صدا را زمانی فعال کنید که دلقک واقعا ضربه خورده باشد.
همچنین صدا کمی بلند است، بنابراین ولوم آن را روی 0.25 قرار دهید. نتیجه:
زمان پخش صدا از داخل کلیپ انیمیشن است.
در نمای انیمیشن روی MoveHorizontally کلیک کنید.
از منوی کشویی Create new Clip را انتخاب کنید.
در file dialog ، نام آن را بزنید و روی Save کلیک کنید.
روی رکورد در نمای انیمیشن کلیک کنید.
در Time Line، playback head را به 0:10 ببرید، سپس در Inspector با فعال کردن کادر انتخاب در گوشه سمت چپ بالای آن، Audio Source را فعال کنید. در 1:00 تکرار کنید، اما اکنون آن را غیرفعال کنید.
توجه داشته باشید : وقتی در نمای انیمیشن روی play کلیک می کنید، صدا را نمی شنوید.
مشاهده تغییرات در خصوصیات غیر از موقعیت و مقیاس می تواند دشوار باشد. از Keyframe Navigation مشخص شده در تصویر زیر استفاده کنید تا بررسی کنید که Audio Source بین enabled و disabled تغییر کند.
یک Animation Clip دیگر با نام MoveVertically ایجاد کنید.
در آن، دلقک را به سمت بالا حرکت دهید (0، 3، 0)، سپس به سمت پایین (0، 3-، 0)، سپس به مرکز برگردد.
همچنین sample rate (نرخ نمونه) را تنظیم کنید.
دلقک را در Hierarchy انتخاب کنید.
در نمای انیمیشن روی Hit کلیک کرده و Create new Clip را انتخاب کنید.
آن را به عنوان MoveVertically ذخیره کنید.
دکمه ضبط را فعال کنید.
در Time Line، 0:15 را انتخاب کنید.
position دلقک را به (0، 3، 0) در Inspector تغییر دهید.
این کار را در 0:45 با موقعیت (0، 3-، 0) تکرار کنید.
در نهایت Samples را روی 12 تنظیم کنید.
نتیجه باید به شکل زیر باشد:
Manipulating Animation Curves
dope sheet نمای فشرده ای را برای زمانی که properties تغییر می کند ارائه می دهد، اما سخت است که بفهمیم یک property بین keyframes چه مقداری دارد.
در حالت Curves می توانید مقدار دقیق هر property را در طول زمان مشاهده و کنترل کنید.
روی Curves در پایین نمای انیمیشن کلیک کنید.
برای MoveVertically، باید چیزی شبیه به این باشد:
میتوانید ببینید که Unity یک منحنی صاف را از keyframes که شما مشخص کردهاید استخراج کرده است.
در حالت Curves، میتوانید این را تغییر دهید تا چیزی مانند آن دو منحنی ایجاد کنید:
به طور کلی شما با Curves، کنترل بسیار دقیقی بر روی تغییرات property خواهید داشت.
جابجایی بین انیمیشن ها (State Machines)
تا این مرحله، شما Animation Clips ایجاد کرده اید.
شما می توانید هر یک از آنها را پلی کنید، اما نمی توانید انیمیشنی که در طول بازی شما پخش می شود را تغییر دهید.
اینجاست که state machines وارد می شوند.
وقتی اولین Animation Clips را ایجاد کردید، خواهید دید که یونیتی قبلاً یک state machines برای دلقک ایجاد کرده است.
می توانید در نمای Animator نگاهی به آن بیندازید.
برای انجام این کار، Clown را در Hierarchy انتخاب کنید و از منو Window\Animator را انتخاب کنید.
اکنون باید تب Animator را درست در کنار تب Game ببینید.
در حال حاضر چندین حالت وجود دارد: MoveHorizontally، MoveVertically، Hit Entry، Exit و AnyState اساساً هر حالت مربوط به یک Animation Clips است که تا زمانی که حالت فعال است پلی می شود.
همچنین فلشی را خواهید دید که از Entry به MoveHorizontally اشاره می کند.
این به این معنی است که MoveHorizontally حالت پیشفرض است، حالتی که state machines در اولین فعالسازی در آن قرار دارد. به رنگ نارنجی است.
توجه : اگر صفحه نمایش کوچکی دارید و همه حالت ها را نمی بینید، نگران نباشید.
فقط alt را نگه دارید و با دکمه سمت چپ ماوس را به سمت پایین حرکت دهید تا در نمای انیماتور حرکت کنید.
چیدمان حالتها بر رفتار تأثیر نمیگذارد، بنابراین با خیال راحت حالتها را بهگونهای که مناسب شما است مرتب کنید.
فقط کافی است آنها را به اطراف بکشید.
اولین Transition در یونیتی
در این مرحله میخواهیم دلقک به محض پایان انیمیشن های مربوطه، بین MoveHorizontally و MoveVertically جابجا شود.
جابجایی از یک حالت به حالت دیگر در انیمیشن سازی Transition نامیده می شود.
برای ایجاد اولین Transition خود، روی MoveHorizontally کلیک راست کنید.
از منوی کشویی گزینه Make Transition را انتخاب کنید، سپس روی MoveVertically کلیک کنید.
این یک انتقال بین دو حالت ایجاد می کند.
همین کار را برای جهت مخالف، از MoveVertically تا MoveHorizontally انجام دهید.
بازی را پلی کنید : اکنون دلقک از چپ به راست، سپس بالا و پایین، به صورت بی نهایت حرکت می کند.
اما در این حالت یک اتفاقی رخ می دهد ؛ دلقک هنگام جابجایی بین حالت ها، corners را بریده است.
در صورتیکه شما اینکار را برای آن تعریف نکرده اید.
برای این مورد، دلقک را در Inspector در حین اجرای بازی انتخاب کنید و به نمای انیماتور بروید.
progress bar را در وضعیت فعال فعلی مشاهده خواهید کرد.
با دقت نگاه کنید و ببینید که یک دوره کوتاه وجود دارد که هر دو حالت، MoveHorizontally و MoveVertically، به طور همزمان دارای یکprogress bar هستند.
این بدان معنی است که یونیتی هر دو حالت را به طور همزمان اجرا می کند و یکی را با دیگری ترکیب می کند.
Blending states (حالت های ترکیبی) می تواند مفید باشد.
وقتی شخصیتی دارید که مثلاً از راه رفتن به دویدن تبدیل می شود، این طبیعی تر به نظر می رسد.
اما مواردی نیز وجود دارد که نمی خواهید دو حالت را با هم ترکیب کنید.
خوشبختانه Unity تنظیماتی را در اختیار شما قرار می دهد که به شما امکان کنترل Transition را می دهد.
در نمای انیماتور، روی پیکان انتقال از MoveHorizontally به MoveVertically کلیک کنید.
در Inspector، اکنون می توانید تنظیماتی را که Transition را کنترل می کنند، مشاهده کنید.
با کلیک بر روی مثلث کنار آن، تنظیمات را باز کنید.
زمان خروج را روی 1 و مدت زمان Transition را روی 0 تنظیم کنید.
همین کار را برای Transition از MoveVertically به MoveHorizontally انجام دهید.
بازی را پلی کنید.
حالا مشاهده خواهید کرد که دلقک به صورت افقی و عمودی حرکت می کند،
اما هر دو به طور همزمان.
نگاهی دیگر به تنظیمات Transition بیندازید :
Has Exit Time تعیین می کند که آیا Transition می تواند در هر زمانی فعال شود یا فقط پس از زمان خروج مشخص شده.
زمان خروج اولین زمانی است که پس از آن Transition می تواند شروع شود.
در زمان عادی نشان داده می شود.
زمان خروج 0.75 به این معنی است که Transition تنها زمانی شروع می شود که انیمیشن 75٪ کامل شده باشد.
مدت زمان Transition و مدت زمان ثابت (Fixed Duration) به شما امکان می دهد مدت زمان Transition را مشخص کنید.
اگر Fixed Duration فعال است، مدت زمان را بر حسب ثانیه مشخص کنید.
در غیر این صورت، مدت زمان را در زمان عادی مشخص کنید.
Transition Offset زمان شروع بازی را در حالت مقصدی که به آن منتقل می شود، کنترل می کند.
به عنوان مثال، مقدار 0.5 به این معنی است که حالت هدف در 50٪ از خط زمانی خود شروع به پخش خواهد کرد.
Interrupt Source کنترل می کند که آیا Transition ممکن است قطع شود، به عنوان مثال زمانی که Transition دیگری راه اندازی می شود.
گاهی اوقات تصور اینکه این پارامترها به چه معنا هستند دشوار است.
خوشبختانه، Transition Graph که مستقیماً در زیر تنظیمات Transition در Inspector قرار دارد، به شما نشان می دهد که دقیقاً چگونه هر انیمیشن پیکربندی شده است :
انواع پارامترها و Combining Conditions (شرایط ترکیب)
- Trigger ها نیز بسیار مفید هستند ، اما انواع پارامترهای بیشتری وجود دارد که می توانید از آنها استفاده کنید:
- Float : Fractions (کسری) (0.1، 0.999، 6.31، …)
- Int : Whole numbers ( اعداد کامل) (1، 5، 13، 1005، …)
- Bool : True or False ( درست یا غلط)
- Trigger : پارامتری Boolean که پس از ریست توسط یک transition به false بازنشانی می شود.
هر کدام از موارد بالا بسته به نیاز شما قابل استفاده است.
به عنوان مثال، یک Int می تواند تعداد دفعات ضربه زدن بازیکن به دلقک را بشمارد و یک انیمیشن خاص را برای همین امر پخش کند.
علاوه بر این، می توانید مقادیر پیش فرض را به هر پارامتر در لیست پارامترهای نمای انیماتور اختصاص دهید.
از یک شرط برای تصمیم گیری در مورد اینکه چه زمانی یک transition باید اتفاق بیفتد استفاده می شود.
شما می توانید بیش از یک شرط را در یک transition تعریف کنید.
در این مورد، برای شروع transition باید همه شرایط رعایت شود.
همچنین میتوانید بیان کنید که، برای مثال، اگر دلقک ضربه خورده یا یک محدودیت زمانی تمام شده است، باید به حالت ضربه منتقل شود.
برای انجام این کار، یک transition دوم بین State (وضعیت) Any و وضعیت Hit ایجاد کنید.
در Inspector، اکنون دو transition را مشاهده می کنید.
برای هر transition ، میتوانید به طور جداگانه triggering condition را تعریف کنید.
Bull’s Eye ( ترکیب کننده ی انیمیشن ها و اسکریپت های C# )
تا به حال دیده اید که سیستم انیمیشن Unity حتی بدون یک خط کد چقدر می تواند قدرتمند و انعطاف پذیر باشد.
اما، مطمئنا، ترکیب کردن این پروسه با کد می تواند بسیار جذاب تر و سرگرم کننده تر باشد.
بنابراین فعال کردن انیمیشن ها از اسکریپت ها چیزی است که در ادامه خواهید آموخت.
فعال کردن انیمیشن با کد
قبل از اینکه بتوانید به یک برخورد واکنش نشان دهید، باید بتوانید آن را تشخیص دهید.
دلقک را در Hierarchy باز کنید و child Skin آن را انتخاب کنید.
در Inspector، روی Add Component کلیک کنید و Physics\Mesh Collider را انتخاب کنید.
در Mesh Collider Component جدید، روی Convex علامت بزنید.
اکنون می توانید یک حاشیه سبز رنگ نازک در اطراف skin دلقک ببینید.
درست است، شکل کاملاً مناسب دلقک نیست، اما به اندازه کافی نزدیک شدیم.
حال بازی را پلی کنید ، کیک (چون یک Collider نیز دارد) دیگر از میان دلقک پرواز نمی کند.
برای تشخیص این برخورد در کد، Skin را در Inspector انتخاب کنید.
روی Add Component کلیک کنید و New Script را انتخاب کنید.
نام اسکریپت را CollisionBehavior بگذارید، Language را روی C Sharp قرار دهید و Create And Add را فشار دهید.
هنگامی که Collider دیگری Collider دلقک را لمس می کند، OnCollisionEnter را فعال می کند.
با دوبار کلیک کردن روی فایل در مرورگر پروژه، CollisionBehavior را در MonoDevelop باز کنید.
کد زیر را در CollisionBehavior بالای خط void Start اضافه کنید:
// 1
public bool collided;
//2
void OnCollisionEnter(Collision collision) {
if (!collided) {
collided = true;
// 3
GameObject clown = gameObject.transform.parent.gameObject;
Animator clownAnimator = clown.GetComponent ();
// 4
clownAnimator.SetTrigger ("hit");
}
}
عملکرد کد به شرح زیر می باشد :
در ابتدا یک متغیر bool ایجاد می کند که به خاطر می آورد که آیا دلقک قبلاً برخورد کرده است یا خیر.
فقط در صورتی انیمیشن را فعال می کند که دلقک هنوز با هم برخورد نکرده (collided ) باشد.
مجموعه های خط بعدی به صورت true کلالیدر شده اند تا مطمئن شوند که انیمیشن Hit را فقط یک بار فعال میکنید.
Clown GameObject را که والد GameObject فعلی است فچ می کند، سپس از GetComponent برای بازیابی Animator استفاده می کند.
SetTrigger را در clownAnimator فرا می خواند.
این باعث می شود انیماتور به حالت Hit برود.
برای انواع پارامترهای دیگر، می توانید از SetFloat، SetInt، SetBool یا ResetTrigger استفاده کنید.
بازی را پلی کنید.
اکنون می توانید پرتاب خوبی داشته باشید وقتی موفق به ضربه زدن به دلقک می شوید، صدای مورد نظر پخش می شود.
Machine Behaviors
Machine Behaviors به شما اجازه می دهد تا رفتاری را که وابسته به state است، اسکریپت کنید.
به عنوان مثال، می توانید کاری کنید که دلقک تا زمانی که در وضعیت Hit است کوچک شود.
اجازه دهید همین مثال را پیش ببریم :
در یونیتی به نمای Animator بروید و وضعیت Hit را انتخاب کنید.
در Inspector بر روی Add Behavior کلیک کنید.
New Script را انتخاب کنید، نام آن را ClownHitBehavior بگذارید و Create And Add را فشار دهید.
روی ClownHitBehavior دوبار کلیک کنید تا باز شود.
حال، متغیر startTime را در داخل ClownHitBehavior اضافه کنید.
float startTime;
این متغیر زمان وارد شدن استیت Hit را ذخیره می کند.
می توانید از این برای کنترل سرعت انیمیشن بسته به زمان واقعی به جای نرخ فریم استفاده کنید.
این تضمین می کند که دلقک بدون توجه به سرعت اجرای بازی با همان سرعت کوچک شود.
سپس به دنبال متد OnStateEnter (کامنت شده) بگردید.
در این متد مقدار startTime را تعیین کرده و آن را با کد زیر جایگذین کنید :
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
startTime = Time.time;
}
OnStateEnter زمانی فراخوانی می شود که ماشین حالت وارد استیت Hit شود.
با Time.time شما زمان را در چند ثانیه از شروع بازی بازیابی می کنید.
اگرچه برای ایجاد آنقدر عالی نیست، اما برای کوچک کردن دلقک شما کافی است.
سپس به دنبال متد OnStateUpdate بگردید و کد زیر را جایگزین آن کنید:
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
GameObject clown = animator.gameObject;
clown.transform.localScale *= Mathf.Lerp (1, 0, Time.time - startTime);
}
در حالی که استیت Hit فعال است، OnStateUpdate روی هر فریم فراخوانی می شود. در هر فریم، scale دلقک را تنظیم می کنید.
برای این کار ابتدا باید Clown GameObject را پیدا کنید.
از آنجایی که اسکریپت بر روی کامپوننت Animator اجرا می شود، نمی توانید به سادگی از طریق gameObject مانند قبل به آن دسترسی داشته باشید.
در عوض، از متغیر animator برای gameObject آن بخواهید و سپس آن را در متغیر دلقک ذخیره کنید.
سپس، scale ، Clown GameObject را با استفاده از Mathf.Lerp تغییر دهید.
این روش به صورت خطی بین دو مقدار عددی interpolates می کند.
به عنوان مثال دو نقطه مختلف روی صفحه را در نظر بگیرید.
یکی y در سمت چپ در 0 و دیگری در موقعیت y در سمت راست در 20 است.
با عبور از 0.50 به Math.Lerp یک نقطه در وسط برمی گرداند.
Math.Lerp را با سه پارامتر فراخوانی کنید :
دو مقداری که بین آن قرار می گیرد، در این مورد 1 و 0، و زمان بر حسب ثانیه از شروع انیمیشن Hit .
سپس Lerp ، scale حاصل را محاسبه می کند.
برای مثال، در 0 ثانیه 1، در 1 ثانیه 0 و در 0.75 ثانیه 0.25 برمی گردد.
بازی را پلی کنید و کیک را به سمت دلقک پرتاب کنید تا زمانی که ضربه بخورید ؛ دلقک کوچک می شود و هرگز دوباره ظاهر نمی شود.
Animation Events (رویدادهای انیمیشن)
وقت آن است که دلقک را دوباره برای انجام وظیفه آماده کنیم.
یک راه عالی برای انجام این کار، از طریق رویدادهای انیمیشن است، که به شما اجازه می دهد تا هنگام اجرای یک Animation Clip ، توابع را از اسکریپت آبجکت بازی فراخوانی کنید.
ابتدا به یک اسکریپت با متدی نیاز دارید که اندازه دلقک را ریست کند.
دلقک را در Hierarchy انتخاب کنید.
در Inspector، به پایین بروید و روی Add Component کلیک کنید.
New Script را انتخاب کنید و نام اسکریپت را ResetClown با زبان C # بگذارید.
بر روی Create و سپس Add کلیک کنید.
اسکریپت ResetClown را در MonoDevelop باز کنید و کد زیر را اضافه کنید:
void ResetClownOnHit () {
gameObject.transform.localScale = Vector3.one;
gameObject.GetComponentInChildren ().collided = false;
}
در این روش، LocalScale دلقک را روی 1 تنظیم می کنید تا اندازه اصلی آن بازگردد.
سپس از GetComponentInChildren() برای ارجاع به CollisionBehavior در skin استفاده میکنید و مطمئن میشوید که متغیر collided آن روی false تنظیم شده است.
اگر این مرحله را کنار بگذارید، دلقک شما همچنان حرکت می کند، اما دیگر به برخورد واکنشی نشان نمی دهد.
اکنون باید یک Animation Event ایجاد کنید که این متد را فراخوانی کند.
در حالی که دلقک در Hierarchy انتخاب شده است، به نمای انیمیشن بروید و Hit animation clip را انتخاب کنید.
در Time Line، playback را روی 1:30 تنظیم کنید.
اگر Time Line شما بیش از ساعت 1:00 قابل مشاهده نیست، از scroll wheel خود برای کوچک کردن آن استفاده کنید.
سپس بر روی دکمه Add Event کلیک کنید.
روی marker ، رویداد انیمیشنی که ایجاد کردید دوبار کلیک کنید.
در dialog window () ، ResetClownOnHit را انتخاب کنید.
این یک رویداد انیمیشن ایجاد می کند که متد () ResetClownOnHit را در 1:30 فراخوانی می کند.
بازی را پلی کنید.
حالا دلقک کوچک می شود، سپس تنظیم مجدد می شود و دوباره شروع به حرکت می کند.
مهرشاد شادان مهر
مدرس سئو ، طراح سایت ، انیماتور
قهرمان زندگی شما در چند سال آینده ی شما می باشد