انیمیشن در یونیتی (دوبعدی)

زمان تقریبی موردنیاز برای مطالعه: ۸ دقیقه

مرحله‌ی سوم: مدیریت انیمیشن‌های گیم‌آبجکت با Animator

بعد از تکمیل شدن assetهای انیمیشن یک گیم‌آبجکت به مدیریت controller آن گیم‌آبجکت از طریق ابزار Animator می‌پردازیم. این ابزار که از طریق پنجره‌ی Animator (از منوی Window > Animation > Animator) قابل دسترسی است پس از انتخاب گیم‌آبجکت موردنظر ماشین حالت (state machine) انیمیشن‌های آن را نمایش می‌دهد. در این ماشین به ازای هر asset انیمیشن موجود در controller یک حالت وجود دارد:

(یک ماشین حالت که در آن سه state انیمیشن‌های TestAnimation2، TestAnimation1 و TestAnimation3 قرار دارند)

در ماشین حالت انیمیشن‌ها در هر لحظه تنها یک state در حالت فعال قرار داشته و انیمیشن state فعال بر روی گیم‌آبجکت اعمال می‌شود.

این ماشین در لحظه‌ی شروع اجرای بازی بر روی Entry State قرار دارد و بعد به Default State تغییر حالت می‌دهد. این امر با یک پیکان که از Entry به Default State کشیده شده نمایش داده شده است.

Default State با رنگ نارنجی از سایر stateها متمایز می‌شود. برای تغییر Default State به یک state دیگر بر روی آن state راست کلیک کرده و گزینه‌ی Set as Layer Default State را انتخاب می‌کنیم.

برای این که امکان سوییچ کردن از یک state به state دیگر وجود داشته باشد از قابلیتی به نام transition استفاده می‌شود. به عنوان مثال در صورتی که قصد داشته باشیم در هنگام اجرای بازی امکان سوییچ شدن انیمیشن فعال از TestAnimation1 به TestAnimation2 وجود داشته باشد باید از TestAnimation1 به TestAnimation2 یک transition وجود داشته باشد. این قابلیت در حکم جاده‌ی یک طرفه‌ای بوده که امکان سوییچ انیمیشن فعال را از انیمیشن مبدا به انیمیشن مقصد را فراهم می‌کند.

برای ایجاد یک transition از یک انیمیشن به انیمیشن دیگر ابتدا بر روی state انیمیشن مبدا راست کلیک کرده و گزینه‌ی Make Transition را انتخاب می‌کنیم؛ سپس بر روی state انیمیشن مقصد کلیک می‌نماییم. در این هنگام یک پیکان از state انیمیشن مبدا به state انیمیشن مقصد رسم شده که بیانگر وجود transition از مبدا به مقصد می‌باشد:

 

تنظیم پارامترهای controller

بعد از ایجاد transitionهای لازم نسبت به ایجاد و تنظیم پارامترهای controller اقدام می‌کنیم. پارامتر متغیری است که در انیماتور تعریف شده و به ازای هر transition امکان مقداردهی و یا تعیین شرط برای آن وجود دارد. در این حالت در صورت تغییر مقدار پارامتر، انیمیشن فعال با استفاده از transitionای که شرط پارامتر را دارا است به state مقصد سوییچ می‌شود.

برای مثال فرض کنید که پارامتری از نوع int و با نام myParameter داریم که در transition انیمیشن TestAnimation1 به TestAnimation2 شرط «برابر بودن با ۱» را به آن داده‌ایم. در این حالت اگر انیمیشن فعال گیم‌آبجکت TestAnimation1 باشد، با مقداردهی myParameter به عدد ۱، transition بین دو انیمیشن فعال شده و انیمیشن فعال به TestAnimation2 سوییچ می‌شود.

برای افزودن پارامتر به controller از پنجره‌ی Animator سربرگ Parameters را انتخاب کرده و بر روی آیکون + کلیک کرده و نوع داده‌ی پارامتر و نام آن را مشخص می‌کنیم. سپس برای افزودن شرط به transition بر روی آن کلیک کرده و در پنجره‌ی Inspector در قسمت Conditions شرطهای خود را اضافه می‌کنیم.

در نهایت برای تغییر پارامترها از طریق کد در یک اسکریپت فیلدی از نوع Animator تعریف کرده و کامپوننت Animator مربوطه را به آن نسبت می‌دهیم و با استفاده از متدهای Set انیماتور (Set[dataType]) اقدام به تغییر مقدار پارامتر می‌کنیم. به عنوان مثال:

نکته امکان تغییر پارامترها در هنگام اجرای بازی از طریق سربرگ Parameters پنجره‌ی Animator نیز امکان‌پذیر است. از این امکان برای تست Animator استفاده می‌شود.

 

افزودن behavior به stateها

هر state می‌تواند یک اسکریپت که از کلاس StateMachineBehaviour ارث‌بری کرده باشد را بر روی خود پیاده‌سازی کند. با استفاده از این اسکریپت می‌توان تعدادی از متدهای مربوط به state را override و شخصی‌سازی نمود. برای افزودن یک اسکریپت StateMachineBehaviour به state ابتدا state موردنظر را انتخاب کرده و سپس از پنجره‌ی Inspector بر روی دکمه‌ی Add Behaviour کلیک می‌کنیم. در نهایت یک نام برای اسکریپت انتخاب می‌کنیم.

فایل اسکریپت ساخته شده به صورت پیش‌فرض دارای متدهای موردنظر و توضیحاتی درباره‌ی آن‌ها به صورت کامنت است. در این مرحله می‌توان متدهای موردنیاز را آنکامنت و استفاده نمود.

برگه‌ها : 1 2 3