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

آموزش ویدئویی بازی‌سازی با Unity - جلسه سه: حرکات اشیاء

در این جلسه به طور کامل مبحث برنامه‌نویسی حرکات اشیاء را به صورت ویدئویی و پروژه محور توضیح خواهیم داد و در نتیجه یک گام به ساخت اولین بازی خود نزدیک‌تر خواهید شد. با ما همراه باشید!

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

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

اما اگر بخواهیم خودمان شیء را کنترل کنیم باید سه موضوع اساسی و مهم را بیاموزیم که عبارت‌اند از:

  • مفهوم و استفاده از متغیرها
  • عبارات if
  • دریافت ورودی بازیکن

اگر بخواهیم کاری کنیک که شیئمان دیگر روی زمین نچرخد و صاف و نرم به جلو حرکت کند دو راه حل داریم: (۱) شیء بازیکن (در مثال ما player) را انتخاب کنیم، به rigidbody برویم و چند مانع یا constraint ایجاد کنیم.

برای مثال، می‌توانیم تیک گزینه چرخش در یکی از محورهای y، x یا z را بگذاریم. در این صورت بازیکن دیگر به هیچ وجه نمی‌چرخد. اما ما به این چرخش برای اعمال تاثیرات فیزیکی جالب نیاز داریم. پس به سراغ روش (۲) می‌رویم که در آن یک physics material ایجاد می‌کنیم. 

دلیل اینکه بازیکن ما در هنگام حرکت رو به جلو می‌چرخد و بالا و پایین می‌پرد این است که بین بازیکن و زمین اصطکاک وجود دارد.

برای کنترل چنین مواردی به یک physics ,aterial نیاز داریم. برای این منظور روی پنل پروژه (پنجره assets در پایین صفحه) کلیک راست می‌کنیم، به قسمت Create می‌رویم و سپس گزینه physics material را انتخاب می‌کنیم. 

حالا که material مورد نظر را داریم می‌توانیم مقادیر اصطکاک (friction) را صفر کنیم تا اصطکاک بین بازیکن و زمین از بین برود.

فراموش نکنید که اگر می‌خواهید تغییرات ایجاد شده در این material اعمال شوند باید آن را Drag کنید و روی شیئی که می‌خواهید (زمین یا بازیکن یا هر شیء دیگری) رها کنید.

در این صورت، بدون این که کلا چرخیدن بازیکن را ممنوع کنید، کاری کردید که بازیکنتان خیلی راحت روی سطح حرکت کند.

بسیار خب، وقت آن است که به سراغ کدهایمان برویم. روی بازیکن کلیک کنید و سپس در قسمت componentها روی script که در جلسه قبل ایجاد کردید دبل کلیک کنید تا به ویژوال استودیو و کدهایتان منتقل شوید.

مفهوم و استفاده از متغیرها

در قسمت قبلی، برای اعمال نیرو یک متد AddForce ایجاد کردید و درون آن با نوشتن عدد مقدار نیروی مورد نظرتان را وارد کردید.

اما فرض کنید یک کد بلند بالا و طولانی نوشتید و می‌خواهید مقادیر نیرو را در آن تغییر دهید. تصورش هم وحشتناک است، اینطور نیست؟

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

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

برای تعریف یک متغیر، ابتدا باید سطح دسترسی (public، private و غیره) را تعیین کنید. سپس باید نوع داده‌ای که قرار است در آن متغیر قرار گیرد را مشخص کنید. بعد یک نام برای آن انتخاب می‌کنید و در انتها بسته به نوع متغیر می‌توانید برای آن مقدار پیش‌فرض تعیین کنید. 

چیزی شبیه به مثال زیر  که در مثال ما دقیقا همین متغیر ایجاد شده است:

;public float forwardForce= 2000f

حالا می‌توانید خیلی راحت درون کد با نوشتن نام متغیر، به مقدار آن دسترسی داشته باشید. همچنین در هر قسمت کد که خواستید، می‌توانید مقدار آن را تغییر دهید.

خوبی unity به این است که وقتی چنین متغیری در کد می‌سازید و تغییرات را Save می‌کنید، در فضای unity در قسمت componentها و درون اسکریپت آن را نمایش می‌دهد و دیگر می‌توانید مقدار متغیر خود را درون فضای unity تغییر دهید و دیگر نیاز نیست حتما برای تغییرات اینچنینی به سراغ کدتان بروید. 

دریافت ورودی بازیکن

برای پرداختن به این موضوع باید به مبحث عبارات یا شرط‌های if تسلط داشته باشید. برای این منظور توصیه می‌کنیم حتما عبارات کنترلی را بیاموزید. 

در کل ساختار عبارت if به این شکل است: 

 (شرط) if

}

کدهایی که در صورت true بودن شرط اجرا می‌شوند

{

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

همانطور که متوجه شدید، باید شرط بررسی فشرده شدن یا نشدن کلید را در قسمت شرط عبارت if بنویسیم. برای این منظور از کد ;()Input.GetKey استفاده می‌کنیم. سپس درون پرانتزهای این کد بین علامت‌های کوتیشن (" ") کلیدی که می‌خواهیم بررسی شود (در مثال دوره ما کلیدهای d و a) را می‌نویسیم. 

حالا بین آکولادهای شرط if، کدی را می‌نویسیم که اگر کلید d فشار داده شد اجرا می‌شود. که این کد مسلما وارد شدن نیرو به محور مورد نظر برای حرکت به سمت چپ (کلید a) و راست (کلید d) است. 

کد نهایی به شکل زیر است: 

if (Input.GetKey("d"))
{
rb.AddForce(500*time.deltatime,0,0);
}

این شرط برای حرکت بازیکن به سمت راست است. دقیقا همین کار را برای حرکت بازیکن به سمت چپ انجام دهید (با این تفاوت که باید یک علامت منها (-) پشت ۵۰۰ قرار دهید تا شیء به جهت مخالف دفعه قبل حرکت کند).

حالا می‌توانید بازیکن خود را کنترل کنید و مقدار نیرو (ورودی) را در محیط unity مشخص کنید. 

همچنین می‌توانید به جای عدد ۵۰۰ که در کد بالا آمده یک متغیر دیگر اجرا کنید (در ویدئو توضیح داده شده است). 

خلاصه

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

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

نکته: می‌توانید اسکریپت‌ها و فایل‌های تمام قسمت‌های این دوره را از طریق این لینک دانلود و به صورت رایگان استفاده کنید. 

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

منبع: brackey

 مطالب مرتبط

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

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

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

آخرین مطالب

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

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

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

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

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

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

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

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

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