یونیتی ابزار بازی سازی قدرتمندی است که رابط کاربری بسیار مناسبی برای افراد تازه کار دارد. با کمک یونیتی میتوانیم انواع مختلفی از بازیها را بسازیم. موتور بازی سازی یونیتی از بازیهای ساده و پیکسلی دوبعدی گرفته تا بازیهای پر از جزئیات سهبعدی را پوشش میدهد. حتی افراد تازه کار هم با استفاده از ابزارهای ساده و آموزشهای مرحلهبهمرحله میتوانند بازیهای سادهای را برای خود بسازند. تمام چیزهایی که برای تبدیل کردن ایدههای خود به واقعیت نیاز دارید در یونیتی وجود دارند. رابط کاربری ساده و آموزشهای بسیار زیاد یونیتی، کمک خیلی خوبی به دانشجویان میکنند. در ضمن جامعه کاربری یونیتی فعال بوده و به صورت منظم هم بهروزرسانیهای جدیدی برای آن ارائه میشوند. این موارد در کنار هم بازی سازی با یونیتی را ساده و سرگرمکننده کردهاند.
آنچه در این مطلب میآموزید:
-
روش نصب یونیتیهاب و راهاندازی پروژه جدید در محیط کار یونیتی را یاد میگیرید.
-
با سبک بازی Endless Runner آشنا شده و قوانین آن را میآموزید.
-
میآموزید که چگونه زمین بازی را ساخته و بر روی آن مانع ایجاد کنید.
-
با روش نوشتن اسکریپت برای فعالسازی موانع بازی در زبان #C شارپ آشنا میشوید.
-
روش نوشتن اسکریپتهای مختلف #C و استفاده از آنها در محیط یونیتی را یاد میگیرید.
-
روش تنظیم ویژگیهای مربوط به اندازه، موقعیت و رنگ اشیاء بازی را در یونیتی یا میگیرید.



در این مطلب از مجله فرادرس، فرایند بازی سازی با یونیتی را بررسی میکنیم. در این آموزش، روش ساخت بازی سادهای به سبک «Endless Runner» را گامبهگام توضیح میدهیم. تمام مراحل ساخت بازی از طراحی زمین بازی و موانع آن تا نوشتن اسکریپتهای مختلف و کنترل بازیکن را خودمان پیادهسازی میکنیم.
ساخت بازی به سبک Endless Runner
بازیهای سبک «دونده بیپایان» (Endless Runner) به این صورت هستند که کاراکتر بازی به طور دائم حرکت کرده و امتیازات موجود در سر راه خود را جمعآوری میکند. در حین بازی موانعی بر سر راه بازیکن ظاهر میشوند که باید از برخورد با آنها دوری کند.
هدف اصلی بازی به پایان رساندن هر مرحله بدون برخورد با موانع است. معمولا مراحل بازی به صورت حلقهوار و بینهایت پشت سر هم تکرار میشوند. هر مرحله سختتر از مرحله قبل میشود. این فرایند تا جایی ادامه پیدا میکند که بالاخره بازیکن با یکی از موانع برخورد کرده و از بازی حذف شود.

در ادامه مطلب، برای تمرین کار با یونیتی، بازی سهبعدی و سادهای را در سبک «Endless Runner» پیادهسازی میکنیم.

شروع به ساخت بازی
ابتدا باید پروژه جدیدی را شروع کنیم. به این منظور نرمافزار یونیتی هاب را باز کرده و در بخش «Projects» بر روی دکمه آبی «New Project» کلیک میکنیم.

در صفحه باز شده باید نوع بازی را انتخاب کنیم. از آنجا که میخواهیم بازی سهبعدی بسازیم، بر روی گزینه «3D» کلیک میکنیم. سپس در کادر مشخص شده، نام دلخواه خود را برای بازی مینویسیم. در این مطلب، نام «3DRunner» را برای پروژه انتخاب کردهایم. بعد از آن باید آدرس محلی را انتخاب کنیم که میخواهیم پروژه در آنجا ساخته شود. در نهایت هم بر روی دکمه «Create project» کلیک میکنیم.

اکنون صبر میکنیم تا یونیتی فایلهای پروژه را بارگذاری کرده و ادیتور مخصوص ساخت بازی را باز کند.

بعد از اینکه ادیتور باز شد، در بخش «Assets»، فولدرهایی با نامهای «Prefab» و «Materials» و «Scripts» ایجاد میکنیم. از این فایلها در ساخت پروژه بازی دونده بینهایت، استفاده خواهیم کرد.

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

- گام اول: بر روی فضای خالی پنجره سمت چپ، راست کلیک کرده و گزینه «Create Empty» را انتخاب میکنیم. با این کار شیء خامی میسازیم و نام آن را «PlatformPrefab» میگذاریم.

- گام دوم: اکنون بر روی شیء PlatformPrefab راست کلیک میکنیم. سپس بر روی قسمت اشیا سهبعدی «3D Object» رفته و در پنجره باز شده، گزینه «Cube» را انتخاب میکنیم. با انجام این کار، مکعب خامی میسازیم و آن را به فضای بازی اضافه میکنیم. در ادامه مطلب با کمک این مکعب المانهای فضای سهبعدی بازی را ایجاد میکنیم.

- گام سوم: نام این مکعب را «Platform» میگذاریم. مختصات «موقعیت» (Position) آن را به صورت (0, 0, 0) و مشخصات مقیاس آن را به شکل (8, 0.4, 20) تنظیم میکنیم. برای تنظیم این مختصات ابتدا باید شیء مورد نظر خود را در صفحه انتخاب کنیم. سپس از پنجره سمت راست، در بخش «Transform» این تنظیمات را پیدا میکنیم.

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

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

در پنجره سمت راست بر روی گزینه «PlatformPrefab» راست کلیک میکنیم. سپس ۶ عنصر «GameObjects» جدید در این قسمت میسازیم. تمام آنها را به ترتیب «Obstacle1» و «Obstacle2» و «Obstacle3» تا «Obstacle6» نامگذاری میکنیم. هر کدام از این اشيا یکی از موانع بازی است. در بخشهای بعد، روش ساخت و استفاده از تمام موانع را توضیح دادهایم.
مانع اول Obstacle1
برای ساخت اولین مانع، ابتدا باید «مکعب» (Cube) جدیدی را در داخل شیء Obstacle1 ایجاد کنیم.

نام مکعب ساخته شده را «Obst1-Cube1» میگذاریم. سپس اعداد مربوط به تنظیمات مقیاس آن را به صورت (8, 0.5, 3) تنظیم میکنیم. در آخر هم آن را بر روی سکوی بازی قرار میدهیم.

برای رنگآمیزی این مکعب، در بخش Assests «ماده» یا (Material) جدیدی ایجاد میکنیم. نام این Material را «BlackMaterial» میگذاریم. سپس رنگ آن را به رنگ سیاه تنظیم میکنیم.

اکنون باید ماده سیاه ساخته شده را به شیء «Obst1-Cube1» تخصیص بدهیم. این کار برای آن است که بازیکن به راحتی بتواند مانع را از سکو تشخیص دهد.

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

برای ساخت این مانع ابتدا دو مکعب را با نامهای «Obst2-Cube1» و «Obst2-Cube2» ایجاد میکنیم. سپس مقدار ویژگی «Scale» را در آنها برابر با (1, 8, 1.5) تنظیم میکنیم.

نام مکعب سوم را «Obst2-Cube3» میگذاریم. مقدار ویژگی Scale را هم در این مکعب برابر با (6, 7, 1.5) تنظیم میکنیم.

برای رنگآمیزی این مکعب، ابتدا شیء «Material» جدیدی میسازیم و نام آن را «YellowMaterial» میگذاریم. سپس مقدار ویژگی رنگ آن را به زرد تغییر میدهیم. در نهایت هم ماده ساخته شده را به شیء Obstacle2 اختصاص میدهیم. این کار نیز با هدف قابل تشخیص بودن این مانع از سکوی بازی انجام میشود.

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

دو تا از مکعبها را با عبارتهای «Obst3-Cube1» و «Obst3-Cube2» نامگذاری میکنیم. سپس مقدار ویژگی Scale هر دوی آنها را برابر با (1, 8, 1.5) تنظیم میکنیم.

نام مکعب سوم را «Obst3-Cube3» میگذاریم. از این مکعب برای ساختن بخش بالایی مانع استفاده خواهیم کرد. بنابراین مقدار صفت Scale آن را برابر با (6, 2, 1.5) تنظیم میکنیم.

اکنون نوبت به مکعب چهارم رسیده است. این مکعب را با عبارت «Obst3-Cube4» نامگذاری میکنیم. مقدار صفت Scale آن را هم به صورت (6, 1, 1.5) تنظیم میکنیم. این مکعب در ارتفاع y=1.25 قرار میگیرد.

برای رنگآمیزی مانع سوم شیء Material جدیدی ایجاد میکنیم. نام این شیء را «RedMaterial» میگذاریم. سپس رنگ آن را به قرمز تغییر میدهیم. وقتی شیء Material آماده شد آن را به Obstacle3 اختصاص میدهیم. اکنون مانع سوم هم به راحتی از سکوی بازی تشخیص داده میشود. همین طور که میبینید در تصویر دوربین به پایین سکو منتقل شده است. به همین دلیل، جهت قرارگیری سایه در این تصویر با تصاویر بالایی فرق میکند.

در تصویر بالا مانع سوم یا «Obstacle3» دیده میشود.
در بخشهای بعدی نشان میدهیم که چطور موانع چهارم و پنجم و ششم را به صورت ترکیبی از موانع اول و دوم و سوم ایجاد کنیم.
مانع چهارم Obstacle4
برای ساخت مانع چهارم، موانع اول و دوم را با همدیگر ترکیب میکنیم.

مانع پنجم Obstacle5
برای ساخت مانع پنجم هم موانع اول و سوم را با همدیگر ترکیب میکنیم.

مانع ششم Obstacle6
برای ساخت مانع ششم هم موانع دوم و سوم را با هم ترکیب میکنیم.

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

ابتدا تمام اشیاء درون ساختار Obstacles را انتخاب کنید. سپس مقدار ویژگی «Tag» در آنها را بر روی عبارت «Finish» تنظیم کنید. این ویژگی در پنجره «Inspector» در سمت راست تصویر قرار دارد. انجام این کار برای آن است که بتوانیم برخورد بازیکن و موانع به همدیگر را تشخیص دهیم.
تا ایجای مطلب، سکوی بازی و موانع مورد نظر خود را ساختهایم. در بخش بعدی، اسکریپت مخصوصی را برای ظاهر شدن تصادفی موانع بازی مینویسیم.
اسکریپت فعالسازی موانع بازی 3D Runner
برای نوشتن اسکریپتهای یونیتی از زبان برنامه نویسی سیشارپ استفاده میکنیم. اکنون به فولدر Script رفته و فایلی با نام «Simp_Platform.cs» ایجاد کنید. بهتر است برای ساخت این فایل از یکی از محیطهای برنامه نویسی مناسب سیشارپ مانند ویژوال استودیو استفاده کنید.
کدهای زیر، با هدف پیادهسازی تصادفی فرایند ساخت موانع در مسیر بازیکن نوشته شدهاند.
خط هشتم از کد بالا public GameObject[] obst; آرایهای از نوع GameObject با نام obst تعریف میکند. این آرایه، لیستی از موانع بازی است. در زمان بازی دائما یکی از این موانع به طور تصادفی روشن شده و بقیه خاموش میشوند. برای درک هرچه بهتر این اسکریپتها باید با معنی و مفهوم کدهای سی شارپ آشنا باشید. در آن صورت حتی میتوانید اسکریپتها را با سلیقه و نظر خود تغییر داده و ویژگیهای جدیدی به بازی اضافه کنید. در صورت نیاز به یادگیری معنی کدهای سی شارپ پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
با کلیک بر روی شیء «PlatformPrefab» در سمت چپ تصویر، پنجره Assets در پایین باز میشود. برای اختصاص دادن اسکریپت نوشته شده به این شیء فقط کافی است که بر روی آن کلیک کرده و به این پنجره بکشید.

دوباره شیء PlatformPrefab را در سمت چپ انتخاب کنید. اکنون به پنجره Inspector این شیء در سمت راست تصویر نگاه کنید. در این پنجره مولفهای برای نشان دادن موانع وجود دارد. تمام موانع را در بخش سمت چپ تصویر انتخاب کرده و با تکنیک «Drag and Drop» به این بخش منتقل کنید. یعنی بر روی آنها کلیک کرده و به اینجا بکشید.

در مرحله بعد هم باید اسکرپیتی بنویسیم که زمین بازی را تا بینهایت تولید کند.
اسکریپت تولید زمین بازی
اکنون محیط کدنویسی خود را باز کرده و اسکریپتی به نام «Simp_GroundGen.cs» ایجاد کنید. وظیفه این اسکریپت آن است که همزمان با دویدن بازیکن به جلو به صورت بینهایت، ساخت زمین بازی را ادامه بدهد و رکورد بدستآمده را ذخیره کند.
برای ساخت زمین بازی و موانع بر سر راه بازیکنان لازم است که با ویژگیهای عناصر موجود در یونیتی آشنا باشیم. تنظیم این ویژگیها و چیدمان صحیح آنها در کنار هم محیط بازی را به شکل منطقی و جذابی شکل میدهد. در صورت نیاز به کسب اطلاعات بیشتر در این حوزه پیشنهاد میکنیم که فیلم آموزش طراحی سطوح سه بعدی در بازی سازی در Unity را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
کدهای زیر را در اسکریپتی با نام «Simp_GroundGen.cs» نوشته و آن را ذخیره کنید.
کد بالا از چهار بخش اصلی تشکیل شده است. به ترتیب تمام آنها را توضیح میدهیم.
- متغیرهای عمومی: در این بخش مهمترین متغیرهای کد تعریف شدهاند.
- mainCamera: دوربین بازی برای بررسی موقعیت زمینها
- PlatformPrefab: نمونهای از زمین یا سکوی بازی
- movingSpeed: سرعت دویدن بازیکن
- tilesToPreSpawn: تعداد زمینهای بازی ساخته شده در اول بازی
- tilesWithoutObst: برای شروع آسانتر بازی چند زمین اول بدون مانع هستند. این متغیر، تعداد زمینهای بدون مانع اول بازی را مشخص میکند.
- تابع Start(): این تابع در ابتدای بازی اجرا شده و تعدادی زمین پشت سرهم ایجاد میکند. زمینهای اول بدون مانع هستند و بقیه زمینها از موانع تصادفی تشکیل شدهاند.
- تابع Update(): این تابع با فشردن کلید Space بازی را شروع میکند. سپس وظیفه مدیریت زمینهای بازی و سرعت بازیکن را برعهده دارد.
- تابع OnGUI(): این تابع وظیفه نمایش اطلاعات بازی را برعهده دارد. اگر بازی هنوز شروع نشده است، پیغام «Press Space to start» را نمایش میدهد. اگر بازی تمام شده باشد، پیغام «Game Over» را نشان میدهد. در ضمن، نشان دادن امتیاز لحظهای بازیکن در گوشه تصویر نیز بر عهده این تابع است.

اکنون باید دو «GameObjects» دیگر بسازیم. یکی از آنها برای مشخص کردن نقطه شروع و دیگری برای نشان دادن نقطه پایان به کار برده میشوند. باید این نقاط را در ابتدا و انتهای زمین بازی قرار بدهیم.

اول بر روی PlatformPrefab کلیک میکنیم. سپس اشیاء ساخته شده را به بخش «Simp_Platform» در پنجره سمت راست با نام Inspector اضافه میکنیم.

شیء بازی یا «game object» جدیدی ایجاد میکنیم. نام آن را SimpGroundGen میگذاریم. سپس اسکریپت Simp_GroundGen.cs را به این شیء بازی اختصاص میدهیم.

حالا موقعیت دوربین اصلی بازی را به مختصات (10, 1, -9) تغییر میدهیم. مقدار ویژگی «Rotation» دوربین را هم برابر با (0, -55, 0) میگذاریم.

برای مشخص کردن محل شروع زمین بازی، دوباره «GameObject» جدیدی ایجاد میکنیم. نام این شیء را «StartingPoint» میگذاریم. در آخر هم مقدار ویژگی Position آن را برابر با (0, -2, -15) تنظیم میکنیم.

اکنون باید به فولدر Prefab برویم. سپس شیء بازی PlatformPrefab را کشیده و به این فولدر منتقل میکنیم. با این کار، شیء PlatformPrefab را به قالب پیشساختهای تبدیل میکنیم که میتوان بارها و بارها بدون نیاز به دوبارهسازی از آن استفاده کرد.

بعد از قرار دادن PlatformPrefab در فولدر Prefab، باید آن را از از تب «Hierarchy» حذف کنیم. حالا PlatformPrefab آماده است. یعنی به راحتی میتوانیم از آن استفاده کنیم.

حلا نوبت به انجام تنظیمات نهایی زمین بازی است. برای این کار، شیء SimpGroundGen را انتخاب میکنیم. باید کارهای زیر را برای این شیء، انجام بدهیم.
- ویژگی «Main Camera» را به دوربین بازی اختصاص میدهیم.
- ویژگی «StartingPoint Object» را به محل شروع بازی تخصیص میدهیم.
- ویژگی «PlatformPrefab» را هم به فولدر Prefab اختصاص میدهیم.

تا به اینجای کار، محیط بازی را به شکل کامل طراحی کردهایم. اکنون نوبت به طراحی عنصر بازیکن رسیده است. در بخش بعد، مراحل طراحی عنصر بازیکن یا دونده بازی را نشان دادهایم.
ساخت بازیکن در بازی 3D Runner
در این بخش از بازی، میخواهیم عنصر بازیکن را بسازیم.
برای این کار باید شیئی با نام «PlayerObject» ایجاد بکنیم.

نکته: تصویر بالا از مراحل ابتدایی بازی و قرارگیری تصادفی موانع آن گرفته شده است. شاید در پروژه شما موانع به شکل دیگری ظاهر شوند. زیرا این فرایند به صورت تصادفی انجام میشود.
ابتدا بر روی شیء PlayerObject راست کلیک میکنیم. سپس با انتخاب گزینه «3D Object» کره جدیدی را ایجاد میکنیم.

توجه: برای ساخت موانع از شکل «مکعب» (Cube) استفاده میکردیم. اما برای ساخت بازیکن از شکل «توپ» یا «کره» (Sphere) استفاده میکنیم.
برای این کره هم باید ماده جدیدی بسازیم. یعنی در پنجره پایین به نام Assets به بخش «Materials» رفته و ماده جدیدی ایجاد میکنیم. نام این ماده را «BlueMaterial» میگذاریم. رنگ آن را هم بر روی آبی یا «Blue» تنظیم میکنیم.

بعد از ساختن ماده آبی، میتوانیم آن را به عنصر بازیکن اختصاص بدهیم.

اکنون باید ویژگی «برخورد دهنده کروی» (Sphere Collider) را از کره مورد نظر حذف کنیم. با این کار، عنصر بازیکن ساخته شده و آماده استفاده است. در بخش بعدی، کدهای مربوط به این عنصر را هم مینویسیم.
یادگیری رایگان اصول اولیه بازی سازی با یونیتی در فرادرس
با ظهور موتور Unity، شرایط بازیسازی سهبعدی به طور کامل تغییر کرد. یونیتی ابزارهای زیادی برای ساخت بازی ارائه میدهد. اما این ابزار فقط منحصر به ساخت بازی نیست. میتوان از آن برای تولید جلوههای گرافیکی با هدف کاربردهای مختلف نیز استفاده کرد. بهخاطر ارتباط نزدیک یونیتی و سیشارپ، برنامه نویسان این زبان راحتتر میتوانند از آن استفاده کنند. با Unity، برنامه نویسی بازیها سادهتر شده و علاقهمندان میتوانند راحتتر بازی بسازند. فرادرس، مجموعه آموزشی کاملی را با هدف آموزش رایگان اصول اولیه و حتی پیادهسازی پروژههای یونیتی تهیه کرده است.
در پایین چند مورد از فیلمهای آموزش این مجموعه را معرفی کردهایم.
برای مشاهده فیلمهای بیشتر درباره بازی سازی با یونیتی بر روی تصویر پایین کلیک کنید.

اسکریپت کنترل بازیکن
در فرایند بازی سازی با یونیتی، تقریبا بیشتر کارها را با کمک این موتور بازی سازی انجام میدهیم. اما برای کامل شدن بازی، باید رفتار بازیکن و محیط بازی را با کدنویسی مشخص کنیم. در این بازی هم چنین کاری انجام میدهیم.
اکنون نوبت به نوشتن اسکریپت کنترل بازیکن رسیده است. بنابراین فایلی با نام «Simp_Player.cs» ایجاد میکنیم. این اسکریپت به بازیکن امکان پریدن و خم شدن را میدهد. هر وقت که بازیکن بخواهد، میتواند با زدن دکمه «W» بپرد و هر وقت که تمایل داشته باشد با کمک دکمه «S» خم میشود.
توجه کنید که در این مطلب، برای اجرای فرایند بازی سازی با یونیتی تمام کدها را به زبان #C نوشتهایم.
در فهرست پایین عملکرد مهمترین توابع نوشته شده در کدهای بالا را توضیح دادهایم.
- تابع Start(): این تابع همیشه قبل از بهروزرسانی اولین فریم از بازی فراخوانی میشود.
- تابع Update(): این تابع در هر فریم یک بار فراخوانی میشود. در تابع Update() کدهای مربوط به عملیات پرش و خم شدن را نوشتهایم.
- تابع FixedUpdate(): در تابع FixedUpdate() برای اعمال کنترل بیشتر، قوانین مربوط به جاذبه را به صورت دستی اعمال کردهایم. از روی ارتفاع پرش و نیروی گرانش میتونیم سرعت حرکت به بالا و پایین را محاسبه کنیم. با این کار میتوان بالاترین مقدار پرش کاراکتر را هم تشخیص داد.

اکنون باید اسکریپت «Simp_Player» را به شیء «PlayerObject» اختصاص بدهیم.

حالا ابتدا گزینه «PlayerObject» را انتخاب میکنیم. در پنجره کناری صفحه کار باید تب Inspector را پیدا کنیم. سپس در این تب بر روی گزینه «Add Component» کلیک میکنیم. از منوی باز شده گزینه «Physics» را انتخاب میکنیم. سپس برای شیء «PlayerObject» باید عنصر «BoxCollider» را انتخاب کنیم.

در نهایت هم شیء «Player» را کمی بالاتر از شیء «StartPoint» و دقیقا در مقابل دوربین قرار میدهیم.

اکنون با فشار دادن دکمه «W» توپ آبی بازیکن میپرد.

با فشار دادن دکمه «S» هم توپ خم شده و روی زمین میخوابد.

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