شلیک تیر در گیم میکر


شلیک تیر در گیم میکر


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

منابع مورد نیاز برای این مرحله اسپرایت شلیک تیر و اسپرایت تیر هست (میتونید سورس آموزش رو در آخر مطلب دانلود کنید)

یه آبجکت برای تیرمون با نام obj_tir ایجاد میکنیم

یک ایونت کریت برای آبجکتمون ایجاد کرده ویک برگه کد به این ایونت اختصاص داده کدهای زیر رو در این برگه وارد میکنیم

motion_set(0,25*obj_player.image_xscale)
image_xscale=obj_player.image_xscale
  • خط اول : ما مسیر حرکت تیر رو مشخص میکنیم با توجه به اینکه کاراکترمون میتونه به سمت چپ و راست حرکت کنه ما سرعت حرکت تیر رو به جهت اسپرایت آبجکت پلیر با کد obj_player. image_xscale مرتبط میکنیم یعنی با این کار اگر کاراکتر ما به سمت راست باشد مقدار image_xscale یک و در صورتی که به سمت چپ باشد مقدار image_xscale برابر -1 است در این صورت سرعت حرکت آبجکت تیر ما بسته به وضعیت پلیر -25 یا 25 خواهد بود .
  • خط دوم : در این خط ما جهت تیر رو با جهت پلیر هماهنگ میکنیم تا تیرمون هنگام حرکت طبیعی به نظر برسه.

در آبجکت پلیر یک ایونت گلوبال موس پرس ایجاد میکنیم

  

با توجه به اینکه نمیخواهم تیر به صورت مداوم تولید بشه پس باید شلیک رو محدود کنید برای این کار یک ایونت آلارم ایجاد میکنیم

3.2

خب برای بررسی اینکه پلیر در حال شلیک است یا خیر نیازمند یک متغییر خواهیم بود برای این کار یک متغییر محلی در ایونت کریت آبجکت پلیر ایجاد میکنیم (کد زیر رو به ایونت کریت اضافه میکنیم)

shot=0

که در این صورت کد ایونت کریت آبجکت پلیر به صورت زیر میشود

image_speed=0.02
shot=0

در ایونت گلوبال موس کلیک کدهای زیر رو اضاف میکنیم

if(shot=0)
{
image_index=1
image_speed=0.2
sprite_index=spr_shot
alarm[0]=10
shot=1
}
  • خط اول : اجرای کدهای شلیک رو مشروط بر صفر بودن متغییر shot میکنیم یعنی اگر مقدار متغییر shot برابر صفر باشد کدهای داخل {} اجرا خواهد شد
  • خط دوم : شروع کدهای شرطی
  • خط سوم : برای اطمینان از اینکه انیمت شلیک بدون نقص و از اول شروع خواهد شد فریم اسپرایت رو برابر 1 قرار میدیم
  • خط چهارم : سرعت اجرای فریمهای آبجکت رو زیاد میکنیم
  • خط پنجم : اسپرایت آبجکت رو به اسپرایت spr_shot تغییر میدیم
  • خط ششم : آلارم صفر رو برابر 10 قرار میدیم تا بعد ده فریم (حدودا هنگام اتمام انیمیشن شلیک) کدهای مربوط به ایجاد تیر رو اجرا کنه
  • خط هفتم : مقدار متغییر shot رو برابر یک قرار میدیم تا قبل از اتمام عملیات کار دیگه ای انجام نشه
  • خط هشتم : شرط رو میبندیم.

در ایونت آلارم کدهای زیر رو وارد میکنیم

shot=0
instance_create(x+(image_xscale*50),y-30,obj_tir)
image_speed=0.02
sprite_index=spr_stop
  • خط اول : در این خط مقدار متغییر رو به 0 تغییر میدهیم تا پلیر بتونه دوباره شلیک کنه
  • خط دوم : در این کد ما آبجکت تیر رو با توجه به مختصات مورد نظرمون با در نظر داشتن جهت پلیر (چپ یا راست بودن پلیر با کد image_xscale در کد تاثیر گذار است) ایجاد میکنیم
  • خط سوم : سرعت اجرای فریم اسپرایت رو به حالت اول بر میگردونیم
  • خط چهارم : اسپرایت آبجکت رو به اسپرایت spr_stop تغییر میدهیم

اگه بازی رو اجرا کنید متوجه خواهید شد که تیر ایجاد میشه ولی اسپرایت ما تغییر نمیکنه علت این عمر کد موجود در ایونت no key هست که در تداخل با کدهای تغییر اسپرایت در ایونت گلوبال لفت پرس هست

کدهای ایونت no key رو مشروط میکنیم تا از تداخل جلوگیری شود در نتیجه کدهای این ایونت به صورت زیر تغییر پیدا خواهد کرد

if(shot=0)
{
sprite_index=spr_stop
speed=0
image_speed=0.02
}

برای جلوگیری از تداخل فوق در کدهای ایونت left و right همین کار رو با کدهای این دو ایونت انجام میدیم

کدهای ایونت left میشه

if(shot=0)
{
image_speed=0.2
motion_set(180,4)
sprite_index=spr_move
image_xscale=-1
}

کدهای ایونت right میشه

if(shot=0)
{
image_speed=0.2
motion_set(0,4)
sprite_index=spr_move
image_xscale=1
}

سورس رو اجرا کنید 

اگه متوجه شده باشین پلیر در حالت حرکت هم شلیک میکنه من دوست ندارم پلیرم در حال حرکت شلیک کنه و دوست دارم برای شلیک حتما متوقف بشه پس یه ایونت step ایجاد میکنم.(این بخش کاملا سلیقه ای هست)

در این ایونت کدهای زیر رو وارد میکنیم

if(shot=1)
{
speed=0
}

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

دقت کنید آبجکتها تیرمون وقتی ایجاد میشن به طرفین حرکت میکنن ولی حذف نمیشن برای جلوگیری از هنگ کردن بازی در بازی های بزرگ بهتره این نوع آبجکتها بعد از خروج از وییو یا روم حذف بشن برای این کار در آبجکت تیر ایونت اوتساید ویو ایجاد میکنیم

در این ایونت اکشن حذف آبجکت  رو از لیب main1 قرار میدهیم تا بعد خروج آبجکت از ویو حذف بشه

موفق باشید.


Download

gmz

1.24 mb

    نظرات


    نام: finalboss

    15 اسفند 1396
    سایت جذاب و شیکی دارید.آموزشاتونم جذابه.متشکر240






ارسال نظر




رفتن به بالا