آموزش مسیریابی حرکت – قسمت دوم

آموزش مسیریابی حرکت – قسمت دوم

مسیریابی در گیم میکر

(:سطح پیشرفته) همانطور که در درس قبل توضیح دادیم یکی از بهترین تکنیک ها برای مسیریابی در گیم میکر  استفاده از روش Grid است. در این درس تصمیم داریم به طور عملی این تکنیک را پیاده سازی کنیم.

شروع

همانطور که گفتیم برای این کار، اولین مرحله ساخت یک سیستم شبکه بندی یا grid است. به این منظور یک پروژه جدید ایجاد کنید و در آن یک روم بسازید. در سربرگ setting ابعاد روم به طور پیش فرض برابر با 768*1024 است و ما تصمیم نداریم آن را تغییر دهیم. از آنجا که در درس گذشته گفتیم اندازه سلول های شبکه باید به قدری باشد که ابعاد روم بر آن بخش پذیر باشد، در نتیجه اندازه سلول 48*64 برای پروژه ما مناسب خواهد بود. بنابراین:

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

my_grid = mp_grid_create(0,0,room_width div 64, room_height div 48 , 64 , 48);

تابع mp_grid_create یک سیستم شبکه بندی را برای ما ایجاد می کند.
در فرمول بالا:
متغیر my_grid نام دلخواه ما برای سیستم شبکه بندی است.
دو پارامتر اول مختصات نقطه آغاز سیستم است. همانطور که می دانید 0 و 0 نقطه بالا و سمت چپ روم بازی است.
دو پارامتر بعد به ترتیب تعداد ردیف های افقی و عمودی است. همانطور که می دانید برای به دست آوردن تعداد ردیف ها کافی است طول و عرض صفحه را به ترتیب بر طول و عرض سلول ها تقسیم کنیم.
نکته: علامت div به معنای تقسیم است و تفاوت آن با علامت / این است که حاصل آن یک عدد طبیعی است و اعشار ندارد. از آنجا که قرار است تعداد ردیف را به دست بیاوریم و کمیت تعداد نمی تواند یک عدد اعشاری باشد از div استفاده کردیم.
دو پارامتر آخر به ترتیب ابعاد سلول های شبکه بندی یعنی 64 در 48 است.
کد شما باید حالا به صورت زیر باشد:

مسیریابی در گیم میکر

حالا برای اینکه بتوانیم این سیستم را در بازی خود مشاهده کنیم و از درستی آن مطمئن شویم یک رخداد draw ایجاد کرده و از کد زیر استفاده می کنیم:

draw_set_alpha(0.5);
mp_grid_draw(my_grid);
draw_set_alpha(1);

کار اصلی برای نمایش سیستم شبکه بندی یا grid بازی را خط دوم یعنی mp_grid_draw انجام می دهد. اما خط قبل و بعد آن برای آن نوشته شده است که با تغییر alpha خطوط میان سلول ها مشخص شود. یعنی در خط اول مقدار alpha موقتا برابر با 0.5 قرار داده شده، سپس در خط دوم مرز میان سلول ها ترسیم شده و سپس در خط آخر مقدار alpha به مقدار اولیه آن یعنی 1 بازگرداند شده تا گیم میکر برای نمایش نمایش سایر آبجکت های بازی از همان مقدار پیش فرض 1 استفاده کند. حالا کد شما در رخداد draw باید به صورت زیر باشد:

مسیریابی در گیم میکر

حالا پروژه خود را تست کنید. اگر طبق مطالب درس پیش رفت باشید باید محیط بازی شما به شکل زیر باشد:

مسیریابی در گیم میکر

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

 

.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *