یکی از مشکلات تازه کار ها در جهان فیزیک، ساخت ماشین است. زیرا برای ساخت ماشین باید کار با اتصالت و نیرو ها را به خوبی بلد باشید.

ما در این مطلب قصد داریم یک ماشین در جهان فیزیک بسازیم.

اولین کاری را که باید بکنیم فعال کردن جهان فیزیکی است. یک room بسازید و جهان فیزیک را در آن فعال کنید.

آموزش کاربا موتور Box2D یا Physics World در game maker.studio

حال باید sprite بدنه ماشین را آماده کنید. شما می توانید برای این کار از یک مستطیل ساده استفاده کنید.

یک sprite جدید بسازید. نام آن را spr_car و به Edit sprite بروید و یک مستطیل به ابعاد 120*50 (120 طول) بکشید. سپس یک رنگ به آن بزنید. آن را تایید کنید و خاستگاه (origin) را در مرکز قرار دهید.

حالا باید object مربوطه را بسازیم.

یک object با نام obj_car بسازید. اسپریت spr_car را به آن انتساب دهید. حال باید ان را در جهان فیزیکی فعال کنیم. تیک Use physics را فعال کنید و سطح برخورد (collision shape) را تنظیم کنید.

سپس چگالی (Density) را 10 و Firection را 1 بگذارید. بقیه را هم 0 کنید.

 حالا باید تایر ماشین را درست کنیم.

اسپرایتی با نام spr_tire ایجاد کنید. اندازه ی آن را 40*40 تنظیم کنید و یک دایره بکشید. origin را در مرکز قرار دهید.

آبجکت آن را بسازید. نام آن را obj_tire بگذارید و اسپرایت spr_tire را به ان انتساب دهید.

تیک Use physics را بزنید. سطح برخورد را تنظیم کرده و چگالی را 40، اصطکاک را 35، ارتجاعیت را 0.5 و بقیه را 0 قرار دهید.

حال یک زمین باید برای بازی بسازیم. زمین را خودتان درست کنید. توجه کنید که چگالی آن را 0 و بقیه را هم به جز اصتحکاک 0 قرار دهید.

حال باید کاری کنیم که این سه object به هم برخورد کنند. اینجا ما از collision group استفاده می کنیم.

Collision group را در تنظیمات فیزیکِ هر یه آبجکت 1 قرار دهید.

حال باید تایر را به بدنه ماشین وصل کنیم.

برای اینکار به obj_car بروید از  زیر اکدستفاده کنید:

t1=instance_create(x-55,y+25,obj_tire);
t2=instance_create(x+55,y+25,obj_tire);
physics_joint_wheel_create(self,t1,t1.x,t1.y,1,1,false,0,0,1,1,false);
physics_joint_wheel_create(self,t2,t2.x,t2.y,1,1,false,0,0,1,1,false);

این کد ابتدا دو obj_tire می سازد و سپس آن ها را به با اتصال wheel به خود متصل می کند.

آموزش اتصال wheel در جهان فیزیکی در game maker:studio

حالا برای چرخاندن تایر ها و حرکت دادن ماشین باید نیرو گشتاور به تایر ها وارد کنیم.

به obj_tire بروید و کد زیر را در رویداد step آن بنویسید.

if keyboard_check(vk_right)
{
physics_apply_torque(200000)
}
if keyboard_check(vk_left)
{
physics_apply_torque(-200000)
}

این کد باعث می شود که هنگام گرفتن کلید راست، نیروی گشتاوری با سرعت 200000 و با کلید چپ نیروی گشتاوری با سرعت 200000- به چرخ ها وارد می کند.

اگر سرعت ماشین زیاد و یا کم بود نیروی گشتاور را تغییر دهید.