توی این پست روش ساده استفاده از نود animation player رو برای ساخت انیمیشن برای اسپرایت ها و اجزاء صحنه بهتون نشون میدم. انیمیشنی که میخوام بسازم، چیزیه که خیلی جاها میشه ازش استفاده کرد. فرض کنید توی بازی یه کلید دارید که کاراکتر میتونه اونو بگیره. ما برای این کلید یه انیمیشن میسازیم که با یه حرکت روون و نرم بالا و پایین بشه و توجه رو جلب کنه.

از این جا شروع میکنیم که یه پروژه خالی ایجاد کردیم. روی نود سرشاخه یا اصلی صحنه کلیک راست میکنیم و add child node رو انتخاب میکنیم.

یک پنجره باز میشه که به شما اجازه میده نود مورد نظر خودتون رو انتخاب کنید. ما الان به یک اسپرایت نیاز داریم که همون طور که قبلا گفتم یک عکس ساده دوبعدیه. من از قبل یک فایل png که تصویر یک کلید هست رو به پروژه اضافه کردم. شما میتونید از همون عکس لوگوی گودو که از قبل توی پروژه وجود داره استفاده کنید. 

در نوار بالایی پنجره ای که باز شده شروع به تایپ sprite کنید. میبینید که نود اسپرایت رو بهتون نشون میده. اون رو انتخاب کنید.

الان اسپرایت ما هنوز خالیه. یعنی تصویری نداره. پس بیاید از بخش file system، تصویر خودتون رو با موس بکشید روی نود اسپرایت:

این جا تصویر کلید رو به اسپرایت دادیم. حالا به همین روش میخوایم یک نود Animation player  به زیر مجموعه اسپرایت اضافه کنیم. در اصطلاح نود انیمیشن پلیر فرزند یا child نود اسپرایت میشه. روی نود اسپرایت کلیک راست کنید و بعد add child node رو بزنید در پنجره ای که باز میشه شروع به تایپ animation player کنید تا نود رو ببینید:

حالا باید سلسله مراتب یا درخت نود شما به این شکل باشه:

وقتی که نود انیمیشن پلیر رو انتخاب کنید، پایین صفحه به تب باز میشه که این شکلیه:

ظاهر ساده ای داره ولی خیلی کارها ازش برمیاد!

هنوز هیچ انیمیشنی نداریم. میخوایم یکی اضافه کنیم. به این شکل عمل کنیدو کلیک راست روی دکمه animation و بعد new و یک اسم براش انتخاب کنید. من اسم move گذاشتم:

الان یک انیمیشن اضافه کردید و میخوام به چند چیز دقت کنید. در تصویر زیر علامتی که دوتا فلش به سمت هم چرخیدن، به معنی تکرار همیشگی یا همون loop یا چرخه است. اگه اون رو بزنید انیمیشنتون وقتی که تموم شد بلافاصله از اول شروع میشه. دکمه ای که به شکل +A است به معنی شروع خودکار یا autoplay است. اگه این روشن باشه با شروع بازی انیمیشن خودبخود اجرا میشه و نیازی به کد نویسی نداره. دکمه add track چیزیه که باهاش خیلی کار دارید. در ادامه توضیح میدم:

این جا لازمه یه ذره دقت بیشتری کنید. ما به روش های مختلف میتونیم انیمیشن ایجاد کنیم. وقتی روی Add track کلیک کنید، 6 گزینه ظاهر میشه. من نمیخوام این جا 6 تاش رو توضیح بدم. ما با اولی کار داریم که property track است. پراپرتی در واقع به ویژگی های یک نود میگن. برای مثال position یک نود، یک پراپرتیه، scale یک پراپرتیه، modulate که مربوط به رنگ و شفافیت نوده یک پراپرتیه. حالا توی این درس ما میخوایم یک انیمیشن برای پراپرتی position درست کنیم. به عبارتی میخوایم توی انیمیشن ما پوزیشن یا مکان نود تغییر کنه. 

روش add track کلیک کنید. گزینه property track رو انتخاب کنید. یک پنجره باز میشه که توش باید نودی که میخوایم براش انیمیشن بسازیم رو انتخاب کنیم. اسپرایت رو انتخاب میکنیم. بعد باید پراپرتی مورد نظر رو انتخاب کنیم. ما به position نیاز داریم، پس اونو انتخاب میکنیم.

پراپرتی انتخاب شد. حالا باید عملا انیمیشن رو بسازیم. در نوار زمانی که میبینید، در نقطه هایی که میخواید پراپرتی مورد نظر تغییر کنه باید یک فریم کلیدی یا key ایجاد کنید. روی اولین نقطه نوار، یعنی شروع انیمیشن کلیک راست کنید و insert key رو انتخاب کنید:

وقتی کلید رو ساختید، به روی اون کلیک کنید و پنجره ای که در سمت راست انجین باز میشه نگاه کنید. این شکلیه:

این در واقع داره میگه در key که انتخاب کردید(لحظه 0)، x  و y نود برابر با 0 است. 

انیمیشن ما به این شکله که در نقطه میانی y نود 10 تا اضافه میشه ( و  اسپرایت کلید، 10 واحد در محور y صفحه میاد پایین) و در پایان انیمیشن دوباره به 0 برمیگرده. حالا به روشی که یاد گرفتید دوتا کلید دیگه در وسط و آخر نوار ایجاد کنید:

کلید یا key وسطی رو انتخاب کنید و در inspector مقدار y رو به 10 تغییر بدید. یه کار دیگه هم کنید. این که نوع حرکت رو از linear به cubic تغییر بدید:

و :تقریبا تموم شده. حالا اگه روی دکمه پلی انیمیشن کلیک کنید باید همچین چیزی رو ببینید:

دقت کنید که دکمه autoplay و loop که قبلا جاشون رو بهتون گفتم روشن کرده باشید.

نکات تکمیلی

انیمیشن ما آمادست. اگر صحنه بازی رو اجرا کنید میبینید که کلید در نقطه 0 بازی در حال حرکته و حتی اگه سعی کنید که اونو به وسط صحنه بیارید وقتی که بازی رو اجرا کنید خواهید دید که بازهم در نقطه 0 است. دلیل این موضوع اینه که هم اسپرایت و هم نود انیمیشن پلیر در صحنه اصلی هستن و مکانشون مطلقه و نسبی نیست. در حالی که ما میخوایم مکان نود انیمیشن نسبت به اسپرایت، نسبی باشه. 

چند تا کار مونده. اول روی اسپرایت کلیک کنید و گزینه save branch as scene رو بزنید تا اسپرایت و نود زیر مجوعه اش به صحنه جدا تبدیل بشن. یک اسم براشون انتخاب کنید.

حالا همه صحنه ها رو یک بار ذخیره کنید. بعد به صحنه اصلی برید و کلید یا اسپرایت خودتون رو به وسط صحنه اصلی بکشید تا انیمیشن رو به خوبی ببینید. در نهایت چیزی که دارید اینه:

تبریک. راه طولانی ای بود ولی شما موفق شدید.