ایجاد حرکات رفت و برگشتی در گیم میکر

ایجاد حرکات رفت و برگشتی در گیم میکر

گیم میکر

حتما در بازی های بسیاری دیده اید که یک کاراکتر یا آبجکت نوعی از حرکات رفت و برگشتی انجام می دهد. مثلا یک نمونه از دشمن های بازی مدام از نقطه ای به نقطه دیگر می رود و سپس از آن نقطه به جایگاه اولیه برمی گردد. یا مثلا آیتم های جمع کردنی بازی مانند سکه یا طلا برای جلب توجه بازیکن در سرجای خود دائما تغییر سایز داده و از کوچک به بزرگ و سپس از بزرگ به کوچک بر می گردند. به این نوع رفتارها، حرکات رفت و برگشتی (یا سینوسی و یا متناوب ) گفته می شود. در این درس تصمیم داریم با نحوه پیاده سازی این رفتار در گیم میکر بپردازیم.

پیاده سازی در گیم میکر

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

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

گیم میکر

 

سپس کلمه Wave را به عنوان نام این اسکریپت در قسمت نامگذاری تایپ کنید. دقت کنید که به صورت قراردادی حرف اول این نام را با W بزرگ بنویسید.

گیم میکر

حالا کدهای آماده زیر را در این اسکریپت Paste کنید:

///Wave(from, to, duration)

a4 = (argument1 – argument0) * 0.5;
return argument0 + a4 + sin((((current_time * 0.001) + argument2 ) / argument2) * (pi*2)) * a4;

 گیم میکر
اگر دقت کرده باشید در خط اول، ساختار کلی این تابع به صورت یک کامنت کاملا مشخص شده است.همان طور که می بینید تابع Wave به سه پارامتر نیاز دارد:
Wave(from, to, duration)
پارامتر اول به معنای مقدار اولیه  است.
پارامتر دوم به معنای مقدار مقصد است.
پارامتر سوم به معنای مدت زمان حرکت برحسب ثانیه می باشد.

 مثال

برای روشن تر شدن مطلب چند مثال مفید خواهد بود. فرض کنیم می خواهیم کاراکتر بازی دائما یک مسیر رفت و برگشتی را تکرار کند. مثلا از x=100 به x=200 در مدت زمان 3 ثانیه برود و سپس این مسیر را برگردد و همینطور تا بی نهایت این حرکت را تکرار کند. برای این کار کافی است در رخداد step متغیر x رابه صورت زیر برابر با تابع Wave قرار دهیم:
x = Wave(100,200,3);
حتما می دانید که مجبور نیستید از این تابع فقط برای تغییر مکان استفاده کنید. مثلا برای تغییر اندازه کاراکتر:
image_xscale = Wave(0.5,2,1);
image_yscale = Wave(0.5,2,1);
و همچنین برای چرخش یک آبجکت به صورت متناوب در مدت زمان فرضی 5 ثانیه:
image_angle = Wave(0,180,5);
مثل همیشه امیدوارم این مطلب نیز برای شما مفید بوده باشد. اگر سوالی در این زمینه دارید می توانید از پایین همین صفحه کامنت بگذارید. موفق باشید. ضمنا مطلب زیر نیز ممکن است برای شما مفید باشد:

 

 

1 دیدگاه

  1. رضا گفت:

    سلام چطور حرکت را بعد از یک رفت و برگشت متوقف کنیم؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *