آموزش ساخت سیستم توقف بازی-قسمت دوم

آموزش ساخت سیستم توقف بازی-قسمت دوم

همانطور که در قسمت اول دیدید با یک تابع بسیار مفید آشنا شدیم. این تابع instance_deactivate_allبود که کار آن غیرفعال کردن همگی آبجکت های درون بازی است. گفتیم که با استفاده از آن می توان برای بازی سیستم Pause یا توقف ایجاد کرد. اما نقطه ضعفی که در این روش وجود دارد این است که باغیرفعال سازی ،تمامی آبجکت ها نامریی می شوندکه این موضوع از لحاظ ظاهری جالب نیست. برای حل این مشکل نیاز داریم که با یک مفهوم جدید آشنا شویم:

Surface (سطح)

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

sprite_create_from_surface(index, x, y, w, h, removeback, smooth, xorig, yorig);

این تابع بخشی از یک surface را کپی کرده و آن را تبدیل به یک اسپرایت می کند.مشخصات پارامترهای مورد نیاز این تابع به صورت زیر است:

ساخت pause در گیم میکر-لیست

پارامترهای تابع sprite_create_from_surface

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

بنابراین پروژه درس گذشته را باز کنید و به سراغ آبجکت obj_pauseبروید و در رخداد Create خط زیر را اضافه کنید:

spr=sprite_create_from_surface(application_surface,0,0,room_width,room_height,false,false,0,0);

تفسیر:

همانطور که می دانید خروجی این تابع برای ما یک اسپرایت خواهد بود. به همین دلیل نام دلخواه spr را برابر آن قرار دادیم.

به جای پارامتر اول application surface را قرار داده ایم تا از سطح پیش فرض گیم میکربرای اسکرین شات گرفتن از بازی استفاده کنیم.

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

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

پارامتر های ششم و هفتم اهمیت و تاثیر چندانی ندارند و می توانید آنها را true یا false قرار دهید.

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

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

 

کد شما در رخداد create باید به صورت زیر باشد:

ساخت pause در گیم میکر-2

از application surface به عنوان surface استفاده کردیم

تنها کاری که باقی می ماند آن است که این اسپرایت ایجاد شده را در زمان متوقف بودن بازی به نمایش بگذاریم تا بازیکن تصور کند که اشیای درون بازی در سر جای خود قفل یا فریز شده اند.بنابراین به سراغ رخداد Draw بروید و کد زیر را در خط اول آن بنویسید:

draw_sprite(spr,0,0,0);

همانطور که حتما می دانید این تابع، فریم 0 از اسپرایت مورد نظر ما را در نقطه 0و0 روم به نمایش می گذارد.کد شما باید به صورت زیر باشد:

ساخت pause در گیم میکر-3

ترسیم اسپرایت ساخته شده از application surface

حالا می توانید کار خود را تست کنید:

ساخت pause در گیم میکر-4

شکل نهایی کار

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

تنها چیزی که از این درس باقی می ماند، کار برای زیباتر کردن نوشته های درون بازی است که آن را در قالب یک درس در جلسه بعد به شما ارائه می کنیم .

می توانید سورس فعلی پروژه را  دانلود کنید.موفق باشید.

پاسخ دهید

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