آموزش یونیتی Unity قسمت دوم

1395/1/12 آقای پیر 3774

درود خدمت دوستان عزیز، علیرضا پیر هستم و با قسمت دوم از سری آموزش های موتور بازی سازی یونیتی در خدمت شما هستم.

در این جلسه ساخت یک بازی دو بعدی در سبک Runner رو شروع می کنیم،

اگر با سبک های مختلف بازی ها آشنایی ندارید،

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

طبق مطالب گفته شده در جلسه ی قبل، یونیتی رو اجرا کنید و یک پروژه ی جدید ایجاد کنید، بنده برای این پروژه نام RunnerGame رو انتخاب کردم

آموزش یونیتی

بازی ای که خواهیم ساخت تقریبا همچین فرمی خواهد داشت:

آموزش یونیتی

ضمن عرض این نکته که به اینکه نقاشیم خیلی خوب هست، واقفم؛ در توضیح تصویر:

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

پلیرمون پس در جهت x ها حرکت می کنه،

قراردادمون این باشه که قراره با کلید c بشینه و با کلید x بپره، هر مرحله رو هم قرار بر این میزاریم که 60 ثانیه باشه.

خوب؛ اول باید هسته اصلی بازیمون رو پیاده سازی کنیم، همه چیز در بازی روی زمین اتفاق میوفته، پس بیاید اول زمین رو بسازیم، حالا چطور بسازیم؟

برای اینکار ما باید یک GameObject ایجاد کنیم، که پلیر روی اون حرکت کنه، بنابر این برای اینکار، از منوی GameObject و از بخش 3D گزینه ی Cube رو انتخاب می کنیم تا یک مکعب به محیط بازیمون اضافه بشه:

آموزش یونیتی

مکعب ما ایجاد شد، اما اگه قرار باشه کاراکتر ما روی این مکعب حرکت کنه، هنوز حرکت نکرده به سمت منفی بینهایت سقوط می کنه:

آموزش یونیتی

برای اینکه این معضل برطرف بشه، باید مکعبمون رو بزرگ کنیم در جهت x.

برای اینکار باید آبجکتمون رو Scale کنیم، برای اینکار دو راه وجود داره، یا اینکه روی مکعب کلیک کنیم و از پنجره ی Inspector و در بخش Scale مقدار X رو اونقدر که به نظر مناسب بیاد افزایش بدیم:

آموزش یونیتی

یا اینکه از بخش بالای ادیتور، گزینه ی Scale رو برای آبجکتتون فعال کنید و با درگ کردن بردار قرمزه به وجود اومده، سایزش رو در جهت x اضافه کنید:

آموزش یونیتی

من گزینه ی اول رو انتخاب می کنم و به مقدار X در Scale عدد 40 رو میدم:

آموزش یونیتی

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

بنابراین من در ادامه هروقت گفتم زمین، منظورم همین مکعب کشیده شده در جهت x هست.

حالا وقتشه که کاراکتر خودمون رو به بازی اضافه کنیم، برای کاراکتر هم اینبار شیء کپسول رو انتخاب می کنیم. بنابراین بار دیگه در منوی GameObject و 3D، گزینه ی Capsule رو انتخاب می کنیم تا یک کپسول وارد ادیتورمون بشه:

این کپسول رو هم از این به بعد صداش می کنیم کاراکتر، الان احتمالا کاراکتر توی زمینه، پس ابزار Transform رو از بالا انتخاب می کنیم و کاراکتر رو در محور y ها میاریم بالا تا روی زمین قرار بگیره:

آموزش یونیتی

حالا باید به کاراکترمون، Character Controller رو نسبت بدیم، برای اینکار روی کاراکتر کلیک کنید، از بخش Inspector روی گزینه ی AddComponent کلیک کنید و در بخش Physics ، گزینه ی Charactrer Controller رو انتخاب کنید تا این Component به پلیر اضافه بشه:

آموزش یونیتی

حالا وقتشه که برنامه نویسی رو شروع کنیم، باید کد های کاراکترمون رو بنویسیم، برای اینکه کد نویسی رو شروع کنیم، در پنجره ی Project کلیک راست کنید، و یه پوشه به اسم Scripts ایجاد کنید با انتخاب گزینه ی Create و Folder...

توی این فولدر ما کد هامون رو مینویسیم از این به بعد:

آموزش یونیتی

حالا روی فولدری که ایجاد کردیم کلیک راست کنید، Create و سپس C# Script رو انتخاب کنید تا یک کد سی شارپ ایجاد بشه براتون، من نام movement رو برای این کد انتخاب کردم:

آموزش یونیتی

روی فایل سی شارپی که ایجاد کردید دابل کلیک کنید و در محیط monodevelop این کد رو جایگزین قبلی کنید:

using UnityEngine;
using System.Collections;	
public class ExampleClass : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    void Update(){
        CharacterController controller = GetComponent();
        if (controller.isGrounded){
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;     
       }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
   }
}

آموزش یونیتی

حالا فایل رو با زدن کلید Ctrl+s ذخیره می کنیم و به محیط یونیتی برگردید و فایل کدی که نوشتید رو با یک درگ اند دراپ، بکشید و روی کاراکتر بندازید:

آموزش یونیتی

حالا بازی رو اجرا کنید و نتیجه رو ببینید (با زدن کلید Ctrl+P یا با زدن اون مثلث بالای صفحه) :

آموزش یونیتی

میبینید که کاراکترمون حالا با کلید های A و D حرکت می کنه، و با کلید Space میپره، اما یک مشکلی وجود داره! با زدن کلید W و S کاراکتر بالا و پایین میره و از زمین میوفته پایین!

ما فقط میخوایم پلیرمون در راستای x ها حرکت کنه.

این مشکل رو در جلسه آینده برطرف خواهیم کرد و بازیمون رو تکمیل میکنیم.

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

دانلود دانلود PDF قسمت دوم آموزش Unity

قسمت بعدیقسمت سوم آموزش یونیتی Unity

کلمات کلیدی