آموزش کدنویسی حرکت دورانی-سطح متوسط

آموزش کدنویسی حرکت دورانی-سطح متوسط

در بسیاری از بازی ها دیده اید که بعضی اشیا به دوریک نقطه خاص حرکت چرخشی انجام می دهند. به این نوع حرکت که شیء حول یک نقطه ثابت و با شعاعی ثابت می گردد ، حرکت دایره ای یا دورانی گفته می شود.

در Game Maker Studio  برای ایجاد حرکت دورانی، دو تابع بسیار مفید قرار داده شده است که ابتدا باید با آن آشنا شویم.

به شکل بالا دقت کنید. همانطور که می بینید بردار V از مبدا مختصات و با زاویه a رسم شده است.
همانطور که می بینید اگر از نوک بردار دقیقا موازی با محور های مختصات، 2 خط را امتداد دهیم تا به محور x  و y برسانیم ، نتیجه کار، سایه بردار بر روی محورهای X  و y است. به سایه یک بردار بر روی محور طول lengthdir_x و بر روی محور عرض lengthdir_y گفته می شود. این دو مقدار در Game Maker Studio در قالب دو تابع به صورت زیر مورد استفاده قرار می گیرند:

سایه بردار  با طول len و زاویه dir بر روی محور x:

lengthdir_x(len , dir)

سایه بردار با طول len و زاویه dir بر روی محورy:

lengthdir_y(len , dir)

حالا به تصویر زیر توجه کنید. اگر تصور کنیم که دایره ما در حال چرخش حول مبدا مختصات است، می توانیم محل قرار گرفتن دایره در هر لحظه را در نوک برداری به طول r با زاویه rot تصور کنیم و در نتیجه مکان دقیق دایره در هر لحظه با استفاده از توابع length_dir قابل دستیابی خواهد بود.

بنابراین برای ایجاد چنین حرکتی در Game Maker Studio به روش زیر عمل می کنیم.
به سراغ شیء مورد نظر رفته و در رخداد create آن سه متغیر زیر را معرفی کنید:

rot = 0 ;
r=100;
cx = 500;
cy = 500;

منظور از rot زاویه گردش شیء است  که در ابتدا آن را برابر با صفر قرار می دهیم.
منظور از r هم شعاع دوران است که ما آن را برابر با 100 قرار داده ایم. شما می توانید شعاع گردش دلخواه خود را استفاده کنید.
منظوراز cx و cy هم مختصات نقطه مرکزی گردش هستند. یعنی نقطه ای که قرار است شیء ما حول آن حرکت دایره ای انجام بدهد.(شما می توانید این نقطه را به دلخواه خود انتخاب کنید. )

از آنجا که قرار است شیء ما دائما در حال حرکت دورانی باشد، پس باید میزان rot  دائما به روز رسانی شود. برای این کار در رخداد step می نویسیم:

rot += 1;

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

x=cx + lengthdir_x( r , rot) ;
y=cy + lengthdir_y(r, rot) ;

حال پروژه را تست کنید تا نتیجه کار خود را مشاهده کنید.
امیدواریم این آموزش برای شما مفید بوده باشد.

پاسخ دهید

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