Mouse drag movement یا درگ و تاچ و ساخت درگ لمسی در گیم میکر استادیو
پنجشنبه, ۲۸ خرداد ۱۳۹۴، ۰۳:۳۲ ب.ظ
Mouse drag movement
اسپرایتی با نام 'sprBall' بسازید و به ابجکتی به نام 'objBall' نسبت بدهید.
در رویداد Create این کد رو بذارید:
xpart=0;
ypart=0;
direction=0;
speed=0;
friction=0.5;
grabbed=false;
در کد بالا سرعت و جهت(direction) رو صفر کردیم.و friction(اصطکاک) رو هم 0.5 . البته بعدا می تونیم طبق نیاز تغییرش بدیم.
از متغیرهای xpart و ypart هم بعدا برای مقایسه ی مختصات ماوس و مختصات ابجکت objBall استفاده می شود و برای حرکت درگ دقیق(drag movement) مورد نیاز می باشند.
ما متغیر grabbed را false کردیم زیرا هنوز روی objBall کلیک نشده است.
حالا که متغیرهای بالا رو تنظیم کردیم،نوبت به drag است.
یک رویداد 'Left Pressed' در زیر شاخه ی mouse بسازید و کد زیر را به آن نسبت دهید:
grabbed=true;
speed=0;
direction=0;
xpart=mouse_x-x;
ypart=mouse_y-y;
متغیر grabbed را true کردیم زیرا روی ابجکت objBall کلیک کرده ایم.
Speed و directionهر دو صفر هستند ابجکت درجا در حال حرکت است و ما می خواهیم به نقطه ای از ماوس که انجا کلیک کردیم حرکت کند.
از xpart و ypart برای تعیین میزان دوری ماوس تا ابجکت استفاده می کنیم.از این متغیرها برای تنظیم دقیق موقعیت توپ در زمان drag استفاده می کنیم.
در رویدا 'Step' این کد رو بذارید:
if grabbed=true then { x=mouse_x-xpart; y=mouse_y-ypart; friction=0; } else { friction=0.5; }
ابتدا ما بررسی می کنیم آیا objBall در حال grab(منظور همون drag و کشیدن با ماوس) است یا خیر. اگر بلی(true) ، توپ را به نقطه ای که ماوس است و objBall را به آنجا set می کنیم.ما موقتا friction را به 0(صفر) تنظیم می نماییم.اگر grabbed=false بود بخش 'else' اجرا و friction(اصطکاک) به مقدار قبلی اش یعنی 0.5 تنظیم می شود.
کد زیر را در رویداد 'End Step' کپی کنید:
if grabbed=true then { if not mouse_check_button(mb_left) then { grabbed=false; direction=point_direction(xprevious,yprevious,x,y); speed=point_distance(xprevious,yprevious,x,y)/2; } } if speed>25 then { speed=25; }
ابتدا چک می کنیم آیا ابجکت grabbed شد یا نه. اگر نه،هیچ چیز را اجرا نمی کنیم.
سپس بررسی می کنیم آیا دکمه ی ماوس پایین(یا فشرده)هست یا خیر.اگر خیر به این معناست که کاربر کلید را رها(release) کرده ،بنابراین objBall را به آنجا حرکت می دهیم.ما grabbed را falase می کنیم زیرا زیاد objBallرا نگه نداشته ایم.
ما directionرا با جهت ماوس تنظیم می کنیم.همچنین speed را به نصف سرعت ماوس تنظیم می کنیم.در پایان این رویداد حداکثر سرعت را روی 25 تنظیم می کنیم.(یعنی اگه سرعت بیشتر بود روی یه مقدار ماکزیمم می ذاریم تا از اون تجاوز نکنه)
ابجکت objBall را یکبار به room اضافه کرده و بازی رو اجرا کنید. هر جا می خواید توپ رو Drag کنید.
اینم سورس برای گیم میکر 8.1 و گیم میکر 6 (توی گیم میکر استادیو هم احتمالا کار می کنه)
http://s3.picofile.com/file/8194334518/tut_mouse_drag.zip.html
۹۴/۰۳/۲۸