لایه های انیمیشن در یونیتی
مترجم:گیم آور
Animation Layers
یونیتی از لایه های انیمیشن برای مدیریت state machine های پیچیده برای body part های مختلف استفاده می کند.
فرض کنید شما یک لایه lower-body(پایین) برای دویدن/پریدن(walking-jumping) دارید و همینطور یک لایه upper-body (بالاتر) رای پرتاب اشیا+تیراندازی.
شما می توانید لایه های انیمیشن را از طریق Layers Widget در گوشه ی بالا و چپ Animator Controller مدیریت کنید.
کلیک روی گیره ی لغزان در سمت راست پنجره تنظیمات لایه را نشان می دهد.
شما می توانید در هر لایه ماسک گذاری کنید. maskبخشی از مدل انیمیت شده روی انیمیشینی هست که باید بکار بسته شود.
پارامتر Blending type دو مقدار می گیرد. مقدار Override باعث می شود اطلاعات لایه های دیگر ignore یا نادیده گرفته شود.مقدار Additive باعث می شود انیمیشن به بالای لایه های قبلی اضافه شود.
با فشردن کلید مثبت(
Mask برای تعیین ماسک استفاده شده روی لایه بکار می رود.برای مثال اگر بخواهید با جود اینکه کاراکتر شما در حال راه رفتن است،می دود یا هنوز در حال ایستاده است،همزمان انیمیشن پرتاب را فقط روی بالاتنه ی مدل اجرا کنید،باید روی لایه ای که انیمیشن پرتاب را در بردارد(به شرطی که بخش های بالاتنه تعریف ده باشد) ماسک(mask) بگذارید.مثل عکس زیر:
همگام سازی لایه انیمیشنAnimation Layer syncing):
اغلب اوقات مناسب است از یک state machine در لایه های مختلف استفاده ی مجدد کنیم.به عنوان مثال اگر بخواهید یک رفتار “wounded” (در لغت به معنی مجروح و جریحه دار و خسته است) را شبیه سازی یا simulate کنید به جای انیمیشن های “healthy” (سلامت)برای walk / run / jump (راه رفتن/دویدن/پریدن) از انیمیشن های “wounded”(مجروح) استفاده می کنید.برای اینکار می تونید روی checkbox روی یکی از لایه های خود استفاده کنید و لایه ای را که می خواهید همزمان یا همگام( Sync) شود انتخاب کنید.ساختار state machine همانگونه خواهد بود اما در حقیقت کلیپ های انیمیشن با حالت های متمایز استفاده می شوند.
این یعنی Synced layer تعریف ماشین حالت خودش را به هیچ وجه ندارد،اما در عوض نمونه ای از سورس لایه ی سینک(Sync) شده هست.هر تغییری که روی لی اوت یا ساختار view ی لایه های سینک شده انجام دهید(مثل اضافه یا حذف خطوط انتقال یا transition بین انیمیشن ها ) روی سورس لایه ی sync شده اعمال می شود.فقط تغییراتی که در synced layer یکتا هستند،انیمیشن های همگام شده ای هستند که با هر state (حالت) استفاده می شوند.
در عکس فوق لایه “Fatigued” با base layer سینک(همگام) شده است.
ساختار ماشین حالت(state mechine به همون پنجره ی فوق می گیم) همانند base layer است و انیمیشن های منحصر به فرد(فردی) به طور متفاوتی در هر حالت swap (تعویض)می شود به جز انیمیشن های معادل مناسب.
مثلا یه کاراکتر دو بعدی هم میتونه تو حالتی که جعبه رو بلند کرده حرکت کنه و هم تو حالتیکه هیچی دستش نیست این رو چه طور میشه با لایه ها درست کرد؟