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

انیمیشن قابلیتی است که توسط آن ویژگی‌های شی مانند شکل، رنگ، مکان و… در گذر زمان تغییر می‌کنند. وجود انیمیشن در بازی‌های ویدیویی جزئی تقریباً جدایی‌ناپذیر در ایجاد جلوه و ظاهر است.

مفهوم انیمیشن در یونیتی با تغییر اتوماتیک پراپرتی‌های کامپوننت‌های یک گیم‌آبجکت بر روی آن گیم‌آبجکت پیاده‌سازی می‌شود.

به عنوان مثال برای ایجاد انیمیشن «بالا و پایین پریدن» کافی است که ابتدا مقدار Y پراپرتی Position کامپوننت Transform کمی افزایش یافته و سپس به مقدار قبلی خود باز گردد.

همچنین برای ایجاد انیمیشن‌هایی که از مجموعه تصاویر ثابت پشت سر هم ساخته می‌شوند کافی است که در هر فریم پراپرتی Sprite کامپوننت Sprite Renderer گیم‌آبجکت با یکی از تصاویر ثابت جایگزین شود. این تصاویر که در هر فریم تغییر کوچکی نسبت به فریم قبلی دارند توهم انیمیشن را به بیننده القا می‌کنند.

نکته به texture atlasهایی که حاوی spriteهای یک انیمیشن هستند اصطلاحاً sprite sheet گفته می‌شود.

برای ایجاد انیمیشن در یونیتی از assetهایی به نام Animation Clip (با فرمت anim) استفاده می‌شود. این assetها اطلاعات مربوط به تغییر پراپرتی‌های موردنظر نسبت به زمان را در خود ذخیره می‌کنند. هر گیم‌آبجکت می‌تواند تعداد نامحدودی از assetهای انیمیشن را بر روی خود پیاده‌سازی کند. به همین منظور یک asset انیمیشن مستقیماً بر روی گیم‌آبجکت اعمال نمی‌شود؛ بلکه ابتدا تمام asset انیمیشن‌های موردنظر برای گیم‌آبجکت (مثل راه رفتن، دویدن، بالا رفتن و…) به صورت مستقل ایجاد شده و سپس در یک asset با فرمت controller قرار می‌گیرند. این asset در حکم مخزن انیمیشن‌ها بوده که توسط کامپوننت Animator نسبت به اعمال مجموعه‌ی انیمیشن‌ها بر روی گیم‌آبجکت اقدام می‌کند.

کامپوننت Animator وظیفه‌ی اعمال انیمیشن بر روی گیم‌آبجکت را بر عهده دارد

بعد از قرارگیری تمام انیمیشن‌ها در مخزن controller، با استفاده از ابزاری به نام Animator اقدام به مدیریت آن‌ها می‌کنیم. با استفاده از این ابزار می‌توان تعیین کرد که در هر لحظه کدام انیمیشن موجود در مخزن controller متصل به کامپوننت Animator بر روی گیم‌آبجکت اعمال شود. برای مثال اگر قصد داشته باشیم که پلیر هنگام حرکت با سرعت کمتر از ۳ واحد در ثانیه انیمیشن «راه رفتن» و در سرعت‌های بالاتر انیمیشن «دویدن» را بروز دهد باید از این ابزار استفاده کنیم. assetهای controller داده‌های این ابزار را نیز ذخیره می‌کنند.

هنگام اجرای صحنه انیمیشن‌ها مستقیماً بر روی گیم‌آبجکت اعمال نمی‌شوند؛ بلکه به controller موجود در پراپرتی Controller کامپوننت Animator آن‌ها رجوع شده و سپس انیمیشن مناسب آن لحظه توسط controller انتخاب شده و بر روی گیم‌آبجکت اعمال می‌شود.

نکته کامپوننت Animation در یونیتی امکان اعمال انیمیشن بر روی گیم‌آبجکت بدون پیچیدگی‌های کار با ابزار Animator را فراهم می‌کند. البته این کامپوننت به دلیل امکانات فراوان Animator منسوخ شده است.

پس به منظور ایجاد انیمیشن برای یک گیم‌آبجکت ابتدا به تعداد موردنیاز asset انیمیشن ساخته و آن‌ها را به گیم‌آبجکت نسبت می‌دهیم. سپس اقدام به تنظیم آن‌ها نموده و در نهایت از طریق ابزار Animator و controller آن‌ها را مدیریت می‌کنیم.

 

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

به منظور ایجاد asset انیمیشن از منوی Create پنجره‌ی Project، گزینه‌ی Animation را انتخاب کرده و نام دلخواه خود را برای آن وارد می‌کنیم. این assetها به طور قراردادی باید در فولدری به نام Animations قرار بگیرند.

از آن‌جایی که امکان تنظیم و ویرایش یک asset انیمیشن به صورت مستقل و بدون متصل بودن آن به یک گیم‌آبجکت امکان‌پذیر نیست پس از ایجاد یک asset انیمیشن با drag کردن آن بر روی نام گیم‌آبجکت هدف در Hierarchy آن انیمیشن را به گیم‌آبجکت نسبت می‌دهیم.

بعد از انجام این کار به صورت خودکار یک asset جدید با فرمت controller و هم‌نام گیم‌آبجکت در مسیر asset انیمیشن ایجاد می‌شود. همچنین کامپوننتی به نام Animator به گیم‌آبجکت افزوده شده که controller ایجاد شده به پراپرتی Controller آن نسبت داده می‌شود. این مخزن به منظور ذخیره‌ی انیمیشن‌های گیم‌آبجکت ایجاد شده است.

بعد از این اتفاق با drag کردن assetهای انیمیشن جدید دیگر controller جدیدی برای گیم‌آبجکت ایجاد نشده و assetها در مخزن controller قبلی قرار می‌گیرند.

برگه‌ها : 1 2 3