آموزش ویدئویی بازی‌سازی با Unity - جلسه شش: GAMEPLAY
1398/02/19 11:53 , میلاد صاحب نظر

آموزش ویدئویی بازی‌سازی با Unity - جلسه شش: GAMEPLAY

در این جلسه به GAMEPLAY بازی می‌پردازیم و بالاخره یک مرحله از بازی‌مان را می‌سازیم. در این قسمت با ویژگی‌های جالبی آشنا خواهید شد و قوه خلاقیت شما بیدار خواهد شد. با ما همراه باشید!

مقدمه: آشنایی با موتور بازی‌سازی Unity قسمت سوم: حرکات قسمت ششم: GAMEPLAY قسمت نهم: تغییر مراحل و انیمیشن
قسمت اول: اصول اولیه Unity قسمت چهارم: دوربین دنبال‌گر قسمت هفتم: امتیاز‌دهی (SCORE) و UI قسمت دهم: پایان بازی
قسمت دوم: برنامه‌نویسی در Unity قسمت پنجم: برخورد قسمت هشتم: Game Over  

قبل از اینکه شروع کنیم اجازه دهید یک بار مرور کنیم و ببینیم تا الان به چه موفقیت‌هایی در بازی‌سازی دست یافته ایم:

  • با محیط یونیتی که یکی از بهترین و قوی‌ترین موتورهای بازی‌سازی است آشنا شدیم و یاد گرفتیم شیء بسازید، سیستم فیزیکی یونیتی را به کار بگیرید و با componentها کار کنید.

  • یاد گرفتیم چگونه برای بازی در یونیتی کد بزنیم. زبان منتخب برنامه‌نویسی را C# انتخاب کردیم و با توابع و تگ‌ها و محیط کد نویسی C# آشنا شدیم و توانستیم با اعمال نیرو به جهات مختلف شیء را به حرکت در آوریم.

  • بیشتر کد‌نویسی کردیم و کنترل به شیء اضافه کردیم و توانستیم تا حدی شیئمان را کنترل کنیم.

  • باز هم با استفاده از کد‌نویسی توانستیم کمی دوربین را تحت سلطه بگیریم و کاری کنیم که همگام با بازیکن حرکت کند.

  • توانستیم برای اعمال فیزیک‌ها و ویژگی‌های مختلف بر اشیاء در زمان برخوردشان با یکدیگر کمی جلوه طبیعی‌تر به بازی بدهیم. که باز هم با برنامه‌نویسی انجام شد.

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

GAMEPLAY چیست؟

GAMEPLAY مشخص می‌کند که:

  1. کاربر یا بازیکن چگونه با بازی تعامل برقرار می‌کند

  2. بازی از چه قوانینی پیروی می‌کند

  3. محیط و نقشه بازی چگونه است

در این قسمت به هر سه مورد خواهیم پرداخت و در انتها با دانشی که می‌آموزید می‌توانید شروع به ایجاد و ساخت مراحل مختلف بازی کنید و اینجا است که قوه تخیل شما حسابی به کار می‌افتد. سه مورد GAMEPLAY معمولا همزمان انجام می‌شوند، بنابراین آن‌ها را ترتیب‌بندی نمی‌کنیم.

 روش مورد استفاده برای ایجاد GAMEPLAY در این قسمت، روش دستی و با اسفتاده از پیش‌ساخته‌ها (prefabها) است. در این روش شما می‌توانید خیلی راحت با ایجاد GAMEPLAY آشنا شوید و مرحله خود را ایجاد کنید اما یک مشکل دارد.

اینکه با استفاده از این روش، نمی‌توانید یک مرحله بی‌انتها بسازید (معمولا چنین مراحلی را در بازی‌های سبک دونده یا Runner مشاهده می‌کنید). در این روش شما یک نقطه آغاز و یک نقطه پایان دارید. مبحث ساخت مراحل بی‌انتها در محتوای این سری نمی‌گنجد و در آینده پوشش داده خواهد شد.

بسیار خب، شروع می‌کنیم.

در قسمت قبلی چند مانع در بازی ایجاد کردیم تا برخورد‌ها را بررسی کنیم. یکی از موانع را انتخاب کنید، آن را drag کنید و به داخل پنل پروژه (همان‌جایی که اسکریپت‌ها و materialها قرار دارند) رها کنید. با این کار شما یک prefab یا پیش‌ساخته ایجاد می‌کنید.

هر موقع بخواهیم از یک شیء، چندین مورد در بازی داشته باشیم از پیش‌ساخته‌ها استفاده می‌کنیم. ما هم قصد داریم در این بازی تعداد زیادی مانع داشته باشیم. 

حالا که یک پیش‌ساخته ایجاد کردید، می‌توانید آن را بگیرید و در هر جای محیط بازی که می‌خواهید قرار دهید. نکته جالب دیگر در مورد پیش‌ساخته‌ها این است که اگر تنظیمات  آن‌ها را از طریق پیش‌ساخته اصلی که در پنل پروژه ایجاد شده است، تغییر دهید این تغییر در همه پیش‌ساخته‌های دیگر هم اعمال می‌شود. 

البته می‌‌توانید هر کدام از پیش‌ساخته‌های ایجاد شده را به صورت انفرادی هم تغییر دهید (با انتخاب آن مانع) از روی صفحه یا از قسمت hierarchy و بعد اگر تصمیم گرفتید که آن تغییر لازم است روی همه پیش‌ساخته‌ها اعمال شود، می‌توانید روی کلید Apply در بالای تنظیمات کلیک کنید.

حالا باید کمی زمین بازیمان را گسترش دهیم، چون فعلا که طول خیلی کمی‌ دارد و چند ثانیه پس از شروع به پایین سقوط می‌کنیم.

بنابراین همانطور که خودتان دیگر قطعا تسلط دارید، ground را انتخاب می‌کنیم، به قسمت Transform می‌رویم و مقدار محور Z را به یک مقدار خیلی بزرگ تغییر می‌دهیم.

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

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

برای این منظور زمین بازی را انتخاب کنید، به قسمت Layers در بالای بخش inspector بروید و روی add layer کلیک کنید. یک نام برای لایه جدیدتان ایجاد کنید.

حالا دوباره زمین را انتخاب کنید و در قسمت Layer در بالای Transform، لایه خودتان را بیابید و روی علامت قفل کنار آن کلیک کنید. حالا دیگر نمی‌توانید در صفحه بازی زمین را انتخاب کنید، اما از قسمت Hierarchy می‌توانید.

بسیار خب حالا با توجه به خلاقیت و ضریب سختی مرحله، شروع به طراحی مرحله کنید. (قبلا گفته شد که برای راحتی کار می‌توانید یک مانع را انتخاب و با فشردن کلید‌های CTRL+D آن را کپی کنید)

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

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

پس روی اسکریپت Player Movement دبل کلیک کنید تا وارد ویژوال استودیو شوید. در روشی که ما در جهات چپ و راست به بازیکنمان نیرو وارد کردیم، سیستم فیزیک بازی باعث می‌شود که به مرور زمان میزان عملکرد بازیکن با تاخیر و کندی مواجه شود.

برای رفع این مشکل، ویژگی‌ای در برنامه‌نویسی برای یونیتی وجود دارد که به آن حالت نیرو گفته می‌شود. یونیتی به ما اجازه می‌دهد که تصمیم بگیریم نیروی مد نظرمات را به چه سبکی به شیء وارد کنیم.

در این مثال ما نیرو را به عنوان یک پارامتر چهارم وارد می‌کنیم. در قسمت‌های قبلی آموختید که پارامتر اول نیرو در راستای محور X، پارامتر دوم در راستای محور Y و پارامتر سوم در راستای محور Z است. 

پارامتر چهارم همان حالت نیرو (Force Mode) است. پس یک ویرگول قرار دهید و تایپ کنید .ForceMode. حالا گزینه‌های مختلفی برای سبک اعمال نیرو مشاهده می‌کنید.

گزینه استاندارد معمولا Force است که نیرو را به صورت مداوم و با در نظر گرفتن حجم شیء به آن وارد می‌کند.

اما در این بازی ما با سرعت عمل شیء مشکل داریم پس گزینه VelocityChange را انتخاب می‌کنیم. این گزینه مستقیما سرعت شیء را تغییر می‌دهد و حجم آن را نادیده می‌گیرد. 

پس پارامتر چهارم به همراه این کد را به هر دو تابع‌های کنترل راست و چپ بازیکن اضافه کنید و کدتان را Save کنید. بر اساس تجربه، وقتی از گزینه VelocityChange استفاده می‌کنید، باید عدد ویژگی Sideway Force را کاهش دهید.

یک کار دیگر که می‌توانید برای روان‌تر شدن حرکت بازیکن و در نتیجه برای بهبود GAMEPLAY بازی انجام دهید، مشخص کردن میزان ویژگی drag  در rigidbody است.

Drag در واقع میزان مقاومت هوا را مشخص می‌کند. پس هر چه میزان Drag بیشتر باشد، شیء ما زودتر توسط مقاومت هوا متوقف می‌شود. همچنین اگر میزان Drag را افزایش دادید، پس حتما عدد Forward force را نیز افزایش دهید تا حرکت رو به جلوی بازیکن کند نشود.

پس این مقادیر را تغییر دهید و تست کنید تا مطمئن شوید GAMEPLAY بازی به اندازه کافی خوب است.

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

نکته هیجان انگیز این بازی این است که موانع به صورت ناگهانی ظاهر شوند و بازیکن نداند که با چه چیزی مواجه می‌شود و باید سریع عکس‌العمل نشان دهد.

پس در قسمت بالا سمت چپ یونیتی، سربرگ Window را باز و گزینه Lighting را انتخاب کنید. برای راحتی کار بالای پنجره Lighting را بگیرید و آن را در کنار Inspector‌ قرار دهید تا بتوانید تغییراتی که انجام می‌دهید را در بازی مشاهده کنید.

در این پنجره می‌توانید کارهای خیلی جالبی انجام دهید، مثلا می‌توانید شدت نور محیط را تعیین کنید، نحوه محاسبه سایه‌ها و بازتاب نور را تعیین کنید و در انتهای پنجره، گزینه Fog یا مه را دارید.

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

با استفاده از گزینه Density می‌توانید شدت یا تراکم مه را نیز مشخص کنید. 

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

این هم از این قسمت. ممنون که با ما همراه هستید‌.

با MUG همراه باشید!

منبع: Brackeys

 مطالب مرتبط

 مقدمه ای بر زبان برنامه نویسی #C و پلتفرم NET Framework.
 آموزش گام به گام #C
 طبقه بندی زبان های برنامه نویسی
۷ زبان توسعه بازی Unity برای آموختن: کدام بهترین است؟
۸ بازی ساخته شده با unity توسط تیم‌های کوچک یا تک‌نفره
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامعSQL Server(جلسه۲۳:Stored Procedureها-بخش۳)
آموزش جامعSQL Server(جلسه۲۳:Stored Procedureها-بخش۳)

در جلسه قبل به بررسی عبارات کنترل جریان و cursor در SQL Server پرداختیم. کار با دستورات نام ...

۹ شغل مرتبط با تکنولوژی که نیاز به مهارت کد نویسی ندارند
۹ شغل مرتبط با تکنولوژی که نیاز به مهارت کد نویسی ندارند

برنامه‌نویسی مناسب همه نیست. برنامه‌نویسی به نوع بسیار خاصی از صلاحیت، تفکر موشکافانه و فرآیند آموزش نیاز دارد ...

آموزش مقدماتیHTMLوCSS(جلسه۲۲:سازماندهی داده با جدول–بخش۲)
آموزش مقدماتیHTMLوCSS(جلسه۲۲:سازماندهی داده با جدول–بخش۲)

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

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات