آموزش ویدئویی بازی‌سازی با Unity - جلسه دو: برنامه‌نویسی
1398/02/09 12:38 , میلاد صاحب نظر

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

در این جلسه به مبحث برنامه‌نویسی برای unity می‌پردازیم. در طول جلسه با زبان #C کد نویسی انجام می‌شود و در انتهای جلسه تا حد زیادی با برنامه‌نویسی برای unity آشنا خواهید شد. با ما همراه باشید!

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

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

اگر با زبان‌های مرسوم برای برنامه‌نویسی در unity آشنایی داشته باشید، پس می‌دانید که دو زبان برتر برای برنامه‌نویسی در unity زبان‌های #C و جاوا اسکریپت هستند. بر اساس رای‌گیری‌های انجام شده، توسعه‌دهندگان معمولا زبان #C را ترجیح می‌دهند.

بنابراین در این دوره برنامه‌نویسی را با زبان #C انجام می‌دهیم. اگر کاملا در دنیای برنامه‌نویسی تازه‌کار هستید و با زبان #C آشنایی ندارید، قویا توصیه می‌کنیم ابتدا دوره آموزش گام‌به‌گام #C بگذرانید و سپس به سراغ unity بیایید.

شروع برنامه‌نویسی برای Unity

بسیار خب، برای شروع برنامه‌نویسی در unity ابتدا باید یک component به نام script ایجاد کنید.

برای این منظور، ابتدا روی شیئی که می‌خواهید برای آن کد بزنید در قسمت hierarchy کلیک کنید، سپس در سمت راست صفحه روی گزینه add component کلیک کنید و گزینه new script را انتخاب کنید. 

سپس باید به script جدید ایجاد شده یک نام بدهید و زبانی که قصد دارید با آن کد بزنید را انتخاب کنید. 

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

برای وارد شدن به قسمت کد‌نویسی کافی است روی component اسکریپتی که ایجاد و نامگذاری کردید دبل کلیک کنید. برنامه به صورت خودکار ویراستار اسکریپت شما را باز می‌کند. 

اگر با ویندوز کار می‌کنید این ویراستار معمولا ویژوال استودیو و اگر با مک کار می‌کنید معمولا monodevelope است. 

محیط برنامه‌نویسی #C

همان‌طور که می‌دانید زبان منتخب ما برای برنامه‌نویسی در Unity، زبان #C بود. افرادی که قبلا با این زبان آشنایی دارند با یک محیط آشنا رو‌به‌رو می‌شوند و راحت‌تر می‌توانند کار کنند.

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

ابتدا دو تگ Using بالا را حذف کنید. تنها تگ using مورد نیاز، تگ Using UnityEngine است. 

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

تابع void start

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

در نتیجه در این تابع کدهایی را باید بنویسید که می‌خواهید فقط یک بار و در همان ابتدای Start شدن بازی اجرا شوند.

نکته: این نکته مخصوص افراد تازه‌کار است. #C به حروف بزرگ و کوچک کد حساس است پس حتما کمی وقت بگذارید و با کد‌ نویسی در #C آشنا شوید. همچنین فراموش نکنید که در انتهای هر خط کد باید آن کد را با یک سمی‌کالن (;) خاتمه دهید.

تابع void update

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

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

همه این اعمال با کد‌ نویسی انجام می‌شوند. پس خوب دقت کنید.

نکته: یک نکته مهم در کد نویسی برای unity این است که فراموش نکنید پس از نوشتن هر خط کد، برای اینکه آن کد روی شیء مورد نظر اعمال شود ابتدا باید کد خود را در ویژوال استودیو Save کنید، بعد آن را در Unity اجرا کنید.

نحوه اعمال تغییرات با کد نویسی

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

برای این منظور مراحل زیر را انجام دهید:

  • به اسکریپت در ویژوال استودیو بروید.
  • در زیر خط کدی که دارای نام اسکریپت است این کد را بنویسید:  (نام انتخابی) (نام component مورد نظر در یونیتی) public برای مثال در ویدئو نوشته شد: ;public rigidbody rb
  • کد بالا را در ویژوال استودیو save کنید و به unity بازگردید. حالا در قسمت componentها در اسکریپتی که ایجاد کردید یک فضای خالی با نامی که در کد نوشتید (در ویدئ rb است) مشاهده می‌کنید.
  • component مورد نظر (در ویدئو rigidbody) را Drag کنید و به داخل این فضای خالی رها کنید. حالا رفرنس شما ایجاد شد و می‌توانید از rb برای نوشتن کد راجع به rigidbody component استفاده کنید.

برای مثال همانند آنچه در ویدئو گفته شد می‌توانید برای تغییر جاذبه این کد را بنویسید: ;rb.useGravity = False

در کد بالا، rb رفرنسی است که به rigidbody اشاره می‌کند. useGravity یک ویژگی مخصوص rigidbody است که مشخص می‌کند جاذبه وجود داشته باشد یا خیر و در فضای ویژوال می‌توانید مقدار آن را تغییر دهید (البته این مورد را در خود Unity هم می‌توانستید انجام دهید، اما هدف ما آشنایی شما با کد نویسی است). 

با rigidbody component کارهای زیادی می‌توانید انجام دهید. یکی از مهم‌ترین آ‌نها اعمال نیرو در جهات مختلف به شیء است. برای این منظور کافی است همانند ویدئو بنویسیم: ;()rb.AddForce

این کد syntax کلی اعمال نیرو است. برای اینکه کد درست عمل کند باید درون پرانتزها اعدادی بنویسید که به آن‌ها آرگومان گفته می‌شود. عدد اول نیرو در راستای محور X، عدد دوم در راستای محور Y و عدد سوم در راستای محور Z است. 

اگر بخواهید نیرو فقط در ابتدای بازی و زمانی که بازی start می‌شود اعمال شود، باید کد بالا را در تابع void start بنویسید. اما اگر می‌خواهید این نیرو به صورت دائم در طول بازی اعمال شود آن را داخل تابع void update باید بنویسید.

نکته: در این بازی که ما قصد ساخت آن را در این دوره داریم، لازم نیست در ابتدای بازی، نیرویی به بازیکن وارد شود. پس در ویدئو ما کل تابع start را حذف کردیم.

ممکن است در ویژوال استودیو و حتی در unity بازی تا به اینجای کار به طور درست و بدون ارور اجرا شود، اما یک ارور نهان در کدی که نوشتیم وجود دارد.

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

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

کافی است آرگومان‌هایی که نوشتید (اعداد نیرو درون پرانتزها) را در کد time,deltatime ضرب کنید. این کد بر اساس تعداد فریمی که سیستم شما در یک ثانیه رسم می‌کند یک مقدار می‌دهد که وقتی در اعداد شما ضرب شود، باعث می‌شود سرعت بازی همه جا یکسان باشد.

بنابراین اگر سرعت سیستم شما خیلی زیاد باشد مقدار این کد خیلی کم، و اگر سیستم شما خیلی کند باشد مقدار این کد خیلی زیاد می‌شود تا سرعت بازی در همه دستگاه‌ها و سیستم‌ها یکسان باشد.

نکته حرفه‌ای: برای محاسبه بهتر اعمال فیزیکی در تابع void update، سیستم unity ترجیح می‌دهد به جای update از fixedupdate استفاده کنید.

خلاصه

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

برای تمرین بیشتر توصیه می‌کنیم خودتان با اضافه کردن شیء جدید و استفاده از ویژگی‌های دیگری که در component‌ها می‌بینید سعی کنید برای بازی خود برنامه‌نویسی کنید. 

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

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

منبع: Brackey

 مطالب مرتبط

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

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

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

آخرین مطالب

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

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

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

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

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

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

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

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

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