«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
Mouse drag movement یا درگ و تاچ و ساخت درگ لمسی در گیم میکر استادیو :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

Mouse drag movement

http://s3.picofile.com/file/8194334550/dragDrop.jpg


اسپرایتی با نام '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
موافقین ۰ مخالفین ۰ ۹۴/۰۳/۲۸
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی