درود مهمان گرامی! ثبت نام

آموزش ساخت بازی در #C آموزش UDK آموزش مدل سازی در Maya
آموزش ساخت بازی در VB آموزش Unity - پروژه محور آموزش مدل سازی با 3Ds Max
آموزش برنامه نویسی اندروید آموزش Unity - ساخت منو آموزش متحرک سازی در 3Ds Max
آموزش ساخت بازی حدس تصویر آموزش Unity - متحرک سازی مجموعه آموزش های ساخت بازی
● آموزش های رایگان ● تبلیغات دیجیتال هوشمند ● استخدام در فرادرس

امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
اضافه کردن قابلیت drag به دوربین در گیم میکر
#1
Star 
آموزش اضافه کردن قابلیت drag به دوربین در گیم میکر

در بسیاری از بازی ها مخصوصا در سبک استراتژیک که محیط بازی از زاویه top دیده می شود، بازیکن با یک محیط نسبتا بزرگ روبه روست. اما قاب دوربین (view) ، تنها بخشی از محیط را نشان می دهد و بازیکن مجبور است برای کنترل کردن نیروها و منابع خود به اطراف محیط بازی سر بزند و قسمت های مختلف را ببیند. برای این منظور برنامه نویس باید قابلیت drag کردن را به بازی اضافه کند. منظور از drag کردن، این است که با کلیک بر روی فضای بازی و کشیدن ماوس به اطراف، قاب دوربین در محیط بازی حرکت کند و سایر مناطق بازی نیز به صورت دلخواه برای بازیکن قابل مشاهده باشد.

روش کار

فرض کنید یک بازی با ابعاد نسبتا بزرگ و یک view فعال داریم. برای پیاده سازی قابلیت drag، تنها به یک آبجکت نیاز خواهیم داشت. نام این آبجکت رابه صورت دلخواه obj_drag بگذارید. یک رخداد Create برای آن ایجاد کنید و در مقابل آن کد زیر را قرار دهید:

کد:
dragging = false;


خط کد بالا به معنای آن است که حالت دراگ در ابتدا و به صورت پیش فرض غیر فعال است.

سپس رخداد Glob Left Pressed را که معنای تک کلیک روی فضای بازی است را اضافه کرده و کد زیر را در مقابل آن بنویسید:

کد:
dragging = true

drag_x = mouse_x

drag_y = mouse_y

همانطور که می بینید در قطعه کد بالا، در زمان تک کلیک ماوس، ابتدا قابلیت دراگ کردن را فعال کردیم و سپس مختصات فعلی ماوس را درون 2 متغیر که با نام دلخواه ایجاد کرده ایم قرار داده ایم.

حالا رخداد step را ایجاد کرده و کد زیر را در مقابل آن قرار دهید:


کد:
if (dragging)

{

    view_xview = (view_xview + drag_x – mouse_x );

    view_yview = (view_yview + drag_y – mouse_y );

}


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

در نهایت رخداد Glob Left Released که به معنای لحظه رها کردن ماوس است را ایجاد کرده و کد زیر را در مقابل آن قرار دهید:


کد:
dragging = false;

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

محدود کردن drag

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

کد:
if (dragging)

{

    view_xview = (view_xview + drag_x – mouse_x );

    view_yview = (view_yview + drag_y – mouse_y );

   view_xview = max(0, min(view_xview, room_width – view_wview));

    view_yview = max(0, min(view_yview, room_height – view_hview));

}

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

امیدوارم که مطلب حاضر برای شما مفید باشد.در صورتی که سوال یا اشکالی درباره آن دارید می توانید بپرسید.

 _____
برگرفته از :http://gameclass.ir
پاسخ
 سپاس شده توسط aminblog76 ، A.m ، sir maker
#2
سپاس و نظر یادتون نره  eek   teeth
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  اموزش کار با game maker server و قابلیت های ان shakala 47 14,760 20/5/1395، 10:29 صبح
آخرین ارسال: shakala
  زوم ویو در گیم میکر استادیو/zoom کردن view در game maker sajjad3011 2 1,354 6/10/1394، 06:10 عصر
آخرین ارسال: king-games
Thumbs Up آموزش قفل کردن فایل ini a3eman 0 1,184 4/7/1394، 07:45 عصر
آخرین ارسال: a3eman
  شفاف یا کمرنگ کردن اسپرایت/sprite یک آبجکت sajjad3011 4 1,788 28/3/1394، 04:20 عصر
آخرین ارسال: sajjad3011
  چگونگی عوض کردن عکس اول بازی iransoft 11 3,889 27/11/1393، 07:40 عصر
آخرین ارسال: Ahoora Gh



کاربرانِ درحال بازدید از این موضوع: 1 مهمان