چگونه بازی پلتفرم بسازیم؟
|اضافه کردن انیمیشنهای بیشتر
بیاین بقیهی انیمیشنهای پلیر رو بهش اضافه کنیم. اوّل چند تا زمین دیگه میذاریم تا پلیر یه جایی باشه که بتونه روش بپره تا راحت بتونیم ببینیم انیمیشنهامون چیجوری کار میکنند.
به لیوت برگردید تا بتونید پلیر و تایلهایی که در اصل زمینمون هستند رو ببینید. هر سه تا تایل رو با کلیک و درگ کردن انتخاب کنید. حالا کنترل رو نگه دارید و تایلها رو درگ کنید تا از روشون کپی بشه. چند بار این کارو بکنید تا چند تا تیکه زمین باشه که پلیر بتونه روشون بپره. ممکنه اگه به عقب زوم کنید تسلط بیشتری داشته باشید و راحت تر این کار رو انجام بدید.
برای اینکه نمای بهتری داشته باشیم بیاین اندازهی پنجرهی بازی رو هم کمی بزرگتر کنیم. در نوار پروژه روی اسم پروژه کلیک کنید تا تنظیمات پروژه نمایش داده بشه. اندازهی پنجره رو به 600×800 تغییر بدید.
حالا که یه جایی برای پریدن داریم، پنجرهی بازیمون هم برای اینکه قسمت بیشتری رو ببینیم بزرگتر شده، بریم سراغ اضافه کردن بقیهی انیمیشنهای پلیر.
یادتون باشه که ما تنظیم کردیم وقتی چپ رو فشار بدیم تصویر پلیر قرینه بشه. پس فقط باید انیمیشنهایی رو وارد کنیم که روشون به سمت راسته.
روی انیمیشن که توی لیوت قرار داره دابل کلیک کنید تا ویرایشگر تصویر باز بشه، ما میخوایم این چهار تا انیمیشن رو وارد کنیم:
- بیکار میخواد بدوه – Idle to run (tween)
2. دویدن – Run
3. پرش در هنگام دویدن – Jump from run
4. پرش در هنگامیکه پلیر سر جای خود ایستاده باشه – Jump from stand
برای اضافه کردن هر کدوم از این انیمیشنها به این ترتیب عمل کنید:
- در پنجرهی Animations کلیک راست کنید (این پنجره به طور پیشفرض، سمت راست عکس شناوره و توش انیمیشن Idle لیست شده) و روی Add animation کلیک کنید.
- اسم انیمیشن رو وارد کنید. ممکنه بخواید اسمهای سادهتری انتخاب کنید که راحت تر حفظشون کنید مثل IdleToRun.
- روی انیمیشن جدیدی که ایجاد کردید کلیک کنید تا توی پنجره دیده بشه که فقط باید یه فریم خالی باشه.
- در پنجرهی Animation frames کلیک راست کنید (این پنجره به طور پیشفرض، زیر تصویر قرار داره و توش فریمهای انیمیشن لیست شده) و Import sprite strip… رو انتخاب کنید.
- اسپرایت استریپ رو انتخاب کنید. توی پک موجود، هر فریم توی یک عکس PNG به صورت جدا هم وجود داره. از این راه هم میتونید فریمها رو بیارید تو امّا استفاده از اسپرایت استریپ سریعتره، پس اسپرایت استریپ رو انتخاب کنید.
- نگاه کنید که کنستراکت2 تعداد فریمها رو درست تشخیص داده باشه، بعد روی OK کلیک کنید.
- فریم اوّل که خالیه و ما بهش احتیاجی نداریم رو حذف کنید.
- توی فریم اوّل، نقطهی مبدأ رو بذارید روی پاهای پلیر. سعی کنید مکان نقطهی مبدأ با نقطهی مبدأ انیمیشن بیکار مطابق باشه. همون طور که برای انیمیشن بیکار نقطهی مبدأ رو روی همهی فریمها اعمال کردید این کار را اینجا هم انجام بدید. (تو پنجرهی Image Points روی Origin کلیک راست کنید و Apply to whole animation رو انتخاب کنید).
- شیفت رو نگه دارید و روی دکمهی Crop کلیک کنید تا یک دفعهای قسمتهای خالی و اضافی همهی فریمها حذف بشن.
- توی نوار ویژگیها، به هر انیمیشن ویژگیهای زیر رو بدین:
Speed: 22 برای JumpFromStand، 15 برای بقیه
Loop: Yes برای Run، و No برای بقیه
این کارها رو برای همهی انیمیشنها انجام بدین، پلیر آخر کار باید پنج تا انیمیشن داشته باشه.
ویرایشگر تصویر رو ببندید. حالا باید بگیم در وقت مناسب انیمیشن مناسب نشون داده بشه. رفتار Platform ایونتهای لازم برای این کار رو در اختیارمون میذاره، ایونتهایی که وقتی اجرا میشن انیمیشن پلیر باید عوض بشه. برای پلیر هم فقط از اکشن Set animation استفاده میکنیم تا انیمیشنش رو عوض کنیم. حواستون باشه که رفتار Platform روی شیء PlayerBox هست، و بعد ما میخوایم انیمیشن شیء Player که دیده میشه رو عوض کنیم.
انیمیشنها از الگوی زیر پیروی میکنند یعنی در این موقعیتها انیمیشنهاشون عوض میشه:
موقع توقّف: Idle
شروع به حرکت: IdleTo Run
وقتی IdleToRun تموم شد: Run
راه اندازی اینها هم با ایونتها کار سادهای هست.
راه انداختن ایونتهای انیمیشن
امیدوارم تا حالا با مراحل ساخت ایونت آشنا شده باشید.
- شیء رو انتخاب کنید.
2. شرط یا اکشن رو انتخاب کنید.
3. اختیاری: اگه اکشن یا شرط پارامتر داشت اون پارامتر رو وارد کنید.
به ایونت شیت برگردین. اوّل از همه، بیاین با استفاده از ایونت On moved که مال رفتار پلت فرمِ شیء PlayerBox هست، تنظیم کنیم که موقع شروع حرکت، انیمیشن پلیر به IdleToRun تغییر کنه:
میخوایم بعد از اینکه انیمیشن IdleToRun تموم شد، انیمیشن به Run تغییر کنه. ما میتونیم این کار رو با استفاده از ایونت On finished که مال شیء Player هست انجام بدیم:
اگه پلیر بدوه و بعد بایسته باید انیمیشن به Idle تغییر کنه. این کارو میتونیم با ایونت On stopped که مال شیء PlayerBox هست انجام بدیم:
بازی رو اجرا کنید. الآن پلیر وقتی میدوه انیمیشنش به دویدن تغییر میکنه و وقتی میایسته انیمیشنش به بیکار تغییر میکنه. امّا انیمیشنهای پریدن هنوز اجرا نمیشن. به خاطر اینکه ما دو انیمیشن برای پریدن داریم اوّل باید بررسی کنیم که پلیر ایستاده یا نه تا بتونیم انیمیشن مناسب رو اجرا کنیم. این کار رو با ایونت زیر میتونید انجام بدین:
در اینجا از ساب-ایونت استفاده کردیم، ساب-ایونتها نسبت به ایونتهای معمولی یکم بیشتر از سمت چپ صفحه فاصله دارند و اینجا زیر ایونت Platform On jump دیده میشن. ساب-ایونتها بعد از اجرا شدن ایونت مادر (همون ایونتی که این ساب-ایونتها زیر مجموعهش هستن) اجرا میشن. الگوی ساب ایونت این طوریه:
وقتی شیء دارای رفتار Platform میپرد، اگر در حال حرکت بود، انیمیشن به JumpToRun تنظیم بشه وگرنه به JumpFromStand.
برای ایجاد ساب-ایونت روی ایونت مادر کلیک راست کنید و Add -> Add sub-event رو انتخاب کنید، یا ایونت مادر رو انتخاب کنید و کلید S رو فشار بدین.
برای اینکه ایونت بالا رو ایجاد کنید باید یک شرط رو برعکس کنید (همونی که کنارش علامت ضربدر داره). وقتی یه شرط رو برعکس میکنیم یعنی دقیقاً برعکس شرطی که الآن هست انجام بده. در اینجا برعکس شدن شرط Platform is moving یعنی Platform is NOT moving. برای برعکس کردن یک شرط ابتدا معمولی شرط رو وارد کنید و بعد روش کلیک راست کنید و Invert رو انتخاب کنید. همچنین میتونید انتخابش کنید و کلید I رو فشار بدین.
فقط یه کار دیگه مونده: پلیر وقتی میپره توی همون انیمیشن پرشش باقی میمونه حتّی وقتی میفته روی زمین. برای رفع این مشکل از ایونت زیر استفاده میکنیم که خیلی شبیه ایونت قبلی میمونه. در ایونت On land که به معنی روی زمین بودن است، اگر پلیر در حال حرکت بود انیمیشن به دویدن (Run) وگرنه به بیکار (Idle) تغییر کنه.
وقتی همهی این کارها رو کردید بازی رو اجرا کنید. تبریک، حالا یه کاراکتر پلیر دارین که به طور کامل همهی انیمیشنهاش درسته! در حالت ایستادن یا دویدن بپرید تا تغییر انیمیشنها رو ببینید و ببینید وقتی که روی زمین میافتید اگه ایستاده باشید انیمیشن بیکار وگرنه انیمیشن دویدن اجرا میشه.
حالا وقتشه که یه دشمن بسازیم!
میشه در مورد اون قسمت چشمک زدن پلیر بیشتر توضیح بدید هر چی میگردم پیداش نمیکنم!!!!!!
سلام، میتونید ویدئوی همین آموزش رو مشاهده کنید
سلام و درود
تبریک میگم بهتون، من تازه برنامه نویسی اندروید رو شروع کردم و علاقه زیادی به ساخت بازی دارم یکی از دوستانم کنستراکت ۲ رو بهم معرفی کردند. ممنون بابت آموزش های خوبتون