صفحه 1 از 5 123 ... آخرینآخرین
نمایش نتایج: از 1 به 10 از 46

موضوع: آموزش ساخت بازی دو بعدی سبک دونده - از طرح ایده تا خروجی

  1. Top | #1

    عنوان کاربر
    مدیرکل
    تاریخ عضویت
    ار ۱۳۹۰
    شماره عضویت
    1
    نوشته ها
    975
    تشکر
    1,327
    تشکر شده 554 بار در 144 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان

    Amoozesh آموزش ساخت بازی دو بعدی سبک دونده - از طرح ایده تا خروجی

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

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

  2. 37 کاربر به خاطر ارسال مفید admin از ایشان تشکر کرده اند:

    Ali.l (۰۵-۲۸-۱۳۹۲),alizer0 (۰۵-۲۸-۱۳۹۲),amir js (۱۱-۲۰-۱۳۹۲),AMIR_REZAs (۱۱-۰۶-۱۳۹۲),Aref.Seven (۰۵-۲۸-۱۳۹۲),ata_2 (۰۶-۰۳-۱۳۹۲),azbddk (۰۸-۲۹-۱۳۹۲),Beny@min (۰۸-۱۶-۱۳۹۴),blender.man (۰۵-۲۸-۱۳۹۲),faraz_223 (۱۰-۰۱-۱۳۹۳),hmchenaran.s (۰۵-۲۸-۱۳۹۲),javad60 (۱۱-۲۸-۱۳۹۲),kamyiab (۰۵-۰۴-۱۳۹۳),Kaveh.Shahedi (۰۵-۱۱-۱۳۹۳),Leon_SFS (۰۹-۱۷-۱۳۹۲),lion361 (۰۵-۲۲-۱۳۹۳),mahdi.abdali (۰۵-۲۰-۱۳۹۳),MARVEL121 (۱۰-۲۵-۱۳۹۳),megnatis (۰۳-۱۶-۱۳۹۳),mehrdad092 (۱۱-۰۸-۱۳۹۴),meysam0501 (۰۲-۱۳-۱۳۹۳),mnkh975 (۰۶-۱۰-۱۳۹۲),Moein (۰۵-۳۰-۱۳۹۳),mohade3 (۰۸-۰۶-۱۳۹۳),mojighahar (۰۴-۰۸-۱۳۹۳),molavi (۰۶-۱۵-۱۳۹۲),Mr-Fear (۱۰-۲۹-۱۳۹۴),MRX (۰۶-۱۶-۱۳۹۵),nemantahan (۰۵-۳۱-۱۳۹۴),nookzan7 (۰۴-۱۲-۱۳۹۳),outlaw (۰۵-۱۶-۱۳۹۳),saeededalat (۰۹-۰۳-۱۳۹۳),scorpion_boy17 (۰۶-۲۵-۱۳۹۲),Survivor (۰۷-۰۳-۱۳۹۳),tiptoooop (۰۶-۲۱-۱۳۹۲),نابغه (۰۲-۲۳-۱۳۹۴),جواد پشه (۰۸-۲۴-۱۳۹۴)

  3. Top | #2

    عنوان کاربر
    مدیرکل
    تاریخ عضویت
    ار ۱۳۹۰
    شماره عضویت
    1
    نوشته ها
    975
    تشکر
    1,327
    تشکر شده 554 بار در 144 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان

    Amoozesh آموزش بخش اول

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


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

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

    البته هنوز نمیدونم که قرار از کارکتر کنترلر استفاده کنم یا سیستم حرکت ساده ریجید بادی.

    یه پروژه جدید تو یونیتی ایجاد می کنم.

    new_project.jpg
    بعد از منو بالا روی گزینه Game Object و بعد create other و یه cube ایجاد می کنیم ،
    create_cube.jpg
    این cube سطح زمین خواهد بود پس از بخش سمت راست صفحه زبانه Inspectore رو انتخاب می کنیم (که معمولا انتخاب هست) و بخش scale رو طبق تصویر زیر تغییر بدید. باید اونقدر تغییرش بدید که بتونیم کارکتر رو روش به حرکت در بیارم. از اینجا به بعد این cube رو زمین صدا می زنیم(هر جا نوشتم زمین بدونید که منظورم همین cube ی هست که به عنوان سطح زیر کارکتر استفاده کردیم)
    create_cube_options.jpg
    بعد دوباره از منو بالا یه capsule ایجاد می کنیم و طبق تصویر اونو روی سطح زمین قرار میدیم، این کپسول قرار تا آخر برنامه نویسی به عنوان کارکتر اصلی مورد استفاده قرار بگیره پس از این به بعد این capsule رو کاراکتر صدا می زنیم.

    create_capsule.jpg

    حالا به کاراکتر باید Character Controller رو نسبت بدیم. پس طبق تصویر ، اول روی کارکتر توی پنجره scene کلیک می کنیم و بعد از منو بالا روی گزینه Component کلیک می کنیم و بعد Physics و بعد هم Character Controller رو انتخاب می کنیم.

    characterController.jpg

    از اینجا به بعد برنامه نویسی شروع میشه، پس در پنجره Project راست کلیک می کنیم و بعد Create و در نهایت c# script رو انتخاب می کنیم. یه فایل جدید سی شارپ ایجاد میشه و از شما می خواد یه اسم براش انتخاب کنید شما هم مثل من کلمه movement رو بنویسید.
    new_csharp_movement.jpg

    * اگه بعد از ایجاد فایل و انتخاب اسم دوباره خواستید اسم فایل سی شارپ رو تغییر بدید حتما توجه کنید که باید اسم کلاس سی شارپ رو هم در کد تغییر بدید، یعنی اسم فایل باید همیشه هم اسم کلاس سی شارپ باشه نمیشه اسم فایل movement باشه اما اسم کلاس داخلش یه چیز دیگه باشه، این قانون فقط برای فایل های سی شارپه.
    بعد از انتخاب اسم برای فایل سی شارپ اونو با استفاده از نشانگر موس میگریم و روی کارکتر رها می کنیم یعنی drag&drop ساده، حالا اسکرپیت به کارکتر نسبت داده شده و آماده کد نویسی شده.


    حالا برای راحتی کار به داکیومنت یونیتی میریم و از کدهای آماده اونجا برای حرکت دادن کارکتر استفاده می کنیم. از منو بالا روی گزینه Help کلیک می کنیم و بعد هم Scripting Reference انتخاب می کنیم. صفحه بروزر وب باز میشه و داکیومنت یونیتی رو نشون میده خوب کلمه Character Controller رو جستجو می کنیم و بعد هم می بینیم که کدوم نتیجه برای حرکت هست کلمات move و simple move رو می بینم و نمونه کدهاشون رو بررسی می کنیم ، من کد مربوط به move رو به کد مورد نظرم نزدیکتر دیدم پس اونو انتخاب می کنم.
    *برای راحتی کار من لینک مربوط به داکیونت move رو اینجا میزارم.
    *برای باز کردن فایل movement در ادیتور فقط کافیه که دوبار روی فایل movement کلیک کنید.

    کل کد رو کپی کنید و بعد تو فایل movement بریزید، حتما دقت کنید که بعد از انجام این کار اسم کلاس رو از Example به movement تغییر بدید. با زدن کلیدهای ترکیبی Ctrl+s تغییرات رو ذخیره می کنیم و به پروژه برمیگردیم، حالا روی دکمه پلی کلیک می کنیم یا می توینم از کلید های ترکیبی Ctrl+p استفاده کنیم و نتیجه رو ببینیم.
    اگه همه چیز درست انجام شده باشه با زدن کلید های چپ، راست،بالا و پایین و همینطور اسپیس می بینید که کارکتر حرکت می کنه و میپره اما این کد حرکت در تمام جهات هست و ما می خوایم که خود کارکتر حرکت مستمر داشته باشه و حتما هم در یک سمت و مسیر حرکت کنه پس لازمه که تغییراتی رو در کد ایجاد کنیم.
    عامل اصلی حرکت در جهات مختلف رو تو کد پیدا می کنیم، مطمئنا بخش که ورودی رو دریافت میکنه حتما منشا این اتفاق هست پس می گردیم دنبال کلمه Input و اونو پیدا می کنیم.


    moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));


    این خط داره یه محور حرکت برای کارکتر تعریف میکنه که در دو محور x و z ورودی بین 1 تا -1 رو ارسال می کنه یعنی زمانیکه ما دکمه سمت راست رو میزنیم مقدار 1 و زمانیکه دکمه سمت چپ رو میزنیم مقدار -1 و زمانیکه هیچ دکمه ای رو نزنیم مقدار صفر رو بر می گردونه، پس برای همینه که وقتی هیچ دکمه ای رو نزدیم کارکتر ثابته و وقتی که کلیدهای سمت راست و چپ رو میزنیم کارکتر حرکت می کنه.
    من این خط رو با نوشتن // به کامنت بدیلش کردم یعنی دیگه به عنوان دستور برنامه نویسی نیست و تبدیل شد به توضیحات و جای اون این کد رو می نویسم.


    moveDirection = Vector3.right;

    این کد معادل این کد هست


    moveDirection = new Vector3(1f,0,0);


    مقدار 1 رو به محور x دادیم تا کارکتر همیشه در محور x حرکت رو به جلو داشته باشه. داکیومنت یونیتی

    Ctrl+s رو می زنیم و به یونیتی بر میگردیم ببینیم چه اتفاقی میافته روی پلی(Ctrl+p) کلیک می کنیم و نتیجه رو می بینیم ، باید کارکتر شروع به حرکت کنه و هر جا که اسپیس رو زدیم بپره.
    من کد رو یه کم بهترش کردم و اینطور شد.


    using UnityEngine;
    using System.Collections;


    public class movement : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    private CharacterController controller;

    private float ch_height=2f;
    private float ch_Crouch=1.3f;

    void Start()
    {
    controller = GetComponent<CharacterController>();
    }
    void Update() {

    if (controller.isGrounded)
    {
    // moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
    //moveDirection = Vector3.right;
    moveDirection = new Vector3(1f,0,0);
    moveDirection = transform.TransformDirection(moveDirection);
    moveDirection *= speed;
    if (Input.GetKeyDown(KeyCode.Z))
    {
    do_jump();
    }
    else if(Input.GetKeyDown(KeyCode.X))
    {
    StartCoroutine(do_crouch());
    }

    }
    moveDirection.y -= gravity * Time.deltaTime;
    controller.Move(moveDirection * Time.deltaTime);
    }

    void do_jump()
    {
    moveDirection.y = jumpSpeed;
    }

    IEnumerator do_crouch()
    {
    GetComponent<CharacterController>().height=ch_Crouch;
    yield return new WaitForSeconds(1f);
    GetComponent<CharacterController>().height=ch_height;
    }
    }




    برای بهتر شدن کار من هر فعالیتی که کارکتر قرار انجام بده مثل پرش یا لیز خوردن رو تو مد نوشتم که در اینجا متد do_jump برای پرش هست و متد do_crouch برای لیز خوردن(معنیش رو درست یادم نیست). این متد ارتفاع کامپونیت CharacterController رو کم میکنه تا کاکتر بتونه از زیر موانع عبور کنه. من این متد رو از نوع IEnumerator نوشتم تا بتونم بش زمان بدم مثلا بگم عدد ارتفاع رو 1 ثانیه از مقدار 2 به 1.3 تغییر بده و دوباره به حالت اول برگردون.


    IEnumerator do_crouch()
    {
    GetComponent<CharacterController>().height=ch_Crouch;
    yield return new WaitForSeconds(1f);
    GetComponent<CharacterController>().height=ch_height;
    }


    طبق کد برای پرش از کلید z و برای لیز خوردن از x استفاده می کنیم.

    برای موانع از cube استفاده می کنیم یعنی دوباره از منو بالا روی گزینه Game Object و بعد create other و یه cube ایجاد می کنیم عرضش رو هم عرض با زمین می کنیم و بعد مماس با سطح زمین قرارش میدیم این مانعی هست که کارکتر باید با پرش از روش عبور کنه. حالا همبنطور که این cube انتخاب شده هست (یعنی روش کلیک کنید تا انتخاب شه) کلید های ترکیبی Ctrl+d رو میزنیم تا یه gameobject دیگه مثل خودش رو ایجاد کنه و بعد هم با استفاده از موس جاشو تغییر می دیم، دقت کنید که ارتفاع مناسبی براش انتخاب کنید که کاکتر بتونه از بعد از ردن کلید x از زیرش عبور کنه.

    برای بخش اول آموزش کافیه، کل پروژه رو نمیزارم که خیلی سنگین میشه پس فقط بخش هایی که درست کردم رو پکیج می کنم و پکیج رو میزارم، شما برای ایمپرت کردن این پکیج فقط کافیه که در پنجره Project راست کلیک کنید و بعد Import Package و در نهایت Custom Package رو انتخاب کنید و پکیج رو ایمپورت کنید. (اگه اشتباهی در نوشتن دیدید بگید تا اصلاح کنم)
    part01.jpg
    تصاوير پيوست شده تصاوير پيوست شده
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: zip pk01.zip (5.7 کیلو بایت, 519 نمايش)
    امضای ایشان

  4. 53 کاربر به خاطر ارسال مفید admin از ایشان تشکر کرده اند:

    (313) (۰۶-۰۲-۱۳۹۲),30naca (۱۱-۲۹-۱۳۹۳),absis (۰۷-۱۳-۱۳۹۵),adel-gh (۰۲-۱۳-۱۳۹۳),Ahmad_2 (۰۹-۱۷-۱۳۹۲),akbar74 (۰۷-۳۰-۱۳۹۳),Ali.l (۰۸-۲۵-۱۳۹۲),alireza124 (۰۷-۱۹-۱۳۹۲),aliscan (۰۶-۱۲-۱۳۹۲),amir js (۱۱-۲۰-۱۳۹۲),arashd (۰۸-۰۷-۱۳۹۴),Aref.Seven (۰۶-۱۰-۱۳۹۲),aryaiereza1 (۰۲-۱۸-۱۳۹۵),ata_2 (۰۶-۰۳-۱۳۹۲),blender.man (۰۶-۰۱-۱۳۹۲),dragon (۰۶-۰۱-۱۳۹۲),hiddenart (۱۰-۲۸-۱۳۹۲),hmchenaran.s (۰۶-۰۱-۱۳۹۲),javad60 (۱۱-۲۸-۱۳۹۲),kamyiab (۰۵-۰۴-۱۳۹۳),Kaveh.Shahedi (۰۵-۱۱-۱۳۹۳),khorshid6034 (۰۹-۲۷-۱۳۹۳),Leon_SFS (۰۹-۱۷-۱۳۹۲),m.crysis (۰۶-۰۱-۱۳۹۲),mahdiii (۰۸-۲۳-۱۳۹۲),Marasiali (۰۹-۲۱-۱۳۹۴),megnatis (۰۳-۱۶-۱۳۹۳),meysam0501 (۰۲-۱۳-۱۳۹۳),mnkh975 (۰۶-۱۰-۱۳۹۲),Moein (۰۵-۳۰-۱۳۹۳),mohade3 (۰۸-۰۶-۱۳۹۳),mojighahar (۰۴-۰۸-۱۳۹۳),molavi (۰۶-۱۵-۱۳۹۲),Mosaver (۰۶-۰۲-۱۳۹۲),MR. Garcia (۰۷-۲۹-۱۳۹۳),navidrh (۰۱-۰۵-۱۳۹۳),outlaw (۰۵-۱۶-۱۳۹۳),pouria pc (۰۶-۰۹-۱۳۹۲),ProUnity (۰۶-۰۲-۱۳۹۲),pyman_unity (۰۸-۱۸-۱۳۹۳),RafeSafari (۱۲-۲۲-۱۳۹۳),sakht85 (۱۱-۲۶-۱۳۹۲),scorpion16 (۰۹-۰۱-۱۳۹۲),scorpion_boy17 (۰۶-۲۵-۱۳۹۲),shirinsoft (۰۱-۰۶-۱۳۹۳),sohrab08 (۰۶-۱۱-۱۳۹۲),Survivor (۰۷-۰۳-۱۳۹۳),tiptoooop (۰۶-۲۱-۱۳۹۲),Unity Gamer (۰۶-۰۱-۱۳۹۲),پترسون (۰۴-۰۶-۱۳۹۴),نابغه (۰۲-۲۳-۱۳۹۴),webmasterafkari (۰۲-۱۲-۱۳۹۵),جواد پشه (۰۸-۲۸-۱۳۹۴)

  5. Top | #3

    عنوان کاربر
    مدیرکل
    تاریخ عضویت
    ار ۱۳۹۰
    شماره عضویت
    1
    نوشته ها
    975
    تشکر
    1,327
    تشکر شده 554 بار در 144 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان

    آموزش ساخت بازی دو بعدی سبک دونده - از طرح ایده تا خروجی- قسمت2

    با یک روز تاخیر قسمت دوم آموزش رو آماده کردم.
    در این قسمت آموزش نحوه برنامه نویسی دوربین و تنظیمات دوربین برای یک بازی دو بعدی را یاد خواهیم گرفت، همچنین نحوه پیاده سازی یک دشمن دنبال کننده.
    ابتدا باید تنظیمات دوربین را تغییر دهیم تا به دوربین دوبعدی نزدیک شود. برای این کار بر روی دوربین در قسمت Hierarchy کلیک می کنیم و بعد از قسمت Inspector مقدار Projection را به Orthographic تغییر می دهیم. با این کار دید دوربین دو بعدی خواهد شد سپس مقدار size را به 10 و Far را هم به 100 تغییر دهید.

    camera_unity.jpg

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



    using UnityEngine;
    using System.Collections;


    public class cam_controller : MonoBehaviour {

    public float zDistance=-10f; // distance z
    public float yDistance=6f; // distanse y
    public float camSpeed=3f; //camera movement speed

    private Transform mytransform; //temp for position
    private Transform target; // player transform
    private Vector3 camPosition; // new camera position

    void Awake ()
    {
    mytransform=transform;
    }

    // Use this for initialization
    void Start ()
    {
    target=GameObject.FindGameObjectWithTag("Player").transform; //find player position
    }

    // Update is called once per frame
    void LateUpdate ()
    {
    //make new position of camera with new y and z
    camPosition=new Vector3(target.position.x,target.position.y+yDistance,target.position.z+zDistance);
    //set new position
    mytransform.position=Vector3.Lerp(mytransform.position,camPosition,Time.deltaTime*camSpeed);
    }
    }




    هسته اصلی کار این دو خط کد است:


    //make new position of camera with new y and z
    camPosition=new Vector3(target.position.x,target.position.y+yDistance,target.position.z+zDistance);
    //set new position
    mytransform.position=Vector3.Lerp(mytransform.position,camPosition,Time.deltaTime*camSpeed);


    در خط اول یک موقعیت جدید که ترکیبی از موقعیت فعلی دوربین و دو مقدار yDistance و zDistance تشکیل شده است. مقدار yDistance فاصله نقطه کانونی دوربین تا وسط پلیر است و مقدار zDistance فاصله نقطه ابتدایی دوربین تا پلیر است. این فایل را به دوربین نسبت می دهیم.

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

    این دشمن به شکل عمل خواهد کرد.
    • دشمن با سرعتی کمتر از سرعت پلیر حرکت می کند.
    • دشمن قادر است بدون خطا موانع را پشت سر بگذارد یعنی از روی مانع و زیر مانع عبور کند.


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

    اولین راه حلی که به ذهنم رسید استفاده از Physics.Raycast متد بود ، اما این متد وسط ارتفاع پلیر را مبدا ریکست قرار می دهد پس قادر نیست موانع بالای نیم تنه و پایین نیم تنه ی پلیر را تشخیص دهد و تنها موانعی را تشخیص می دهد که ارتفاعی بیش از نیم تنه ی پلیر را داشته باشند. پس لازم است از متد دیگری استفاده کینم.

    در داکیومنت یونیتی یک نمونه کد برای همین کار وجود دارد، Physics.CapsuleCast دقیقا همان چیزی است که ما نیاز داریم، بدون هیچ گونه تغییر نمونه کد موجود در داکیومنت را در پروژه منتقل خواهیم کرد. (لینک داکیومنت)
    خوب یک فایل سی شارپ با نام enemy_movement ایجاد می کنیم و تمامی اطلاعات موجود در فایل movement که همان فایل کنترل حرکت پلیر بود را به این فایل منتقل می کنیم، توجه کنید که نام کلاس را دوباره به enemy_movement تغییر دهید.
    در کد جدید دیگر نیازی نیست که انجام عملیات پرش و خم شدن(لیز خوردن) را با زدن کلید های Z و X انجام دهیم و باید کاری کنیم که خودِ کد این کار را انجام دهد، پس بخش های مربوط به ورودی صفحه کلید را حذف می کنیم. یعنی این چند خط:



    if (Input.GetKeyDown(KeyCode.Z))
    {
    do_jump();
    }
    else if(Input.GetKeyDown(KeyCode.X))
    {
    StartCoroutine(do_crouch());
    }


    حالا یک متد جدید با نام check_see که یک نام دلخواه است ایجاد می کنیم. کد موجود در داکیومنت را که کپی کرده بودیم در این متد پِیست(paste) می کنیم و اندکی تغییرات را برای گرفتن خروجی مناسب از این متد انجام می دهیم. به این شکل:


    void check_see()
    {
    RaycastHit hit;
    CharacterController charContr = GetComponent<CharacterController>();
    Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F;
    Vector3 p2 = p1 + Vector3.up * charContr.height;
    Vector3 fwd = transform.TransformDirection(Vector3.right);
    if (Physics.CapsuleCast(p1, p2, charContr.radius, fwd, out hit, 2f))
    {
    if(hit.transform.tag=="mane1" && !jumping)
    {
    jumping=true;
    do_jump();
    }
    else if(hit.transform.tag=="mane2" && !crouching)
    {
    crouching=true;
    StartCoroutine(do_crouch());
    }
    }
    }




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


    using UnityEngine;
    using System.Collections;


    public class enemy_movement : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    private CharacterController controller;

    private float ch_height=2f;
    private float ch_Crouch=1.3f;

    public bool jumping=false;
    public bool crouching=false;

    void Start()
    {
    controller = GetComponent<CharacterController>();
    }
    void Update() {

    if (controller.isGrounded)
    {
    // moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
    //moveDirection = Vector3.right;
    moveDirection = new Vector3(1f,0,0);
    moveDirection = transform.TransformDirection(moveDirection);
    moveDirection *= speed;
    jumping=false;

    }
    moveDirection.y -= gravity * Time.deltaTime;
    check_see();


    controller.Move(moveDirection * Time.deltaTime);
    }

    void do_jump()
    {
    moveDirection.y = jumpSpeed;
    }

    IEnumerator do_crouch()
    {
    GetComponent<CharacterController>().height=ch_Crouch;
    yield return new WaitForSeconds(1f);
    GetComponent<CharacterController>().height=ch_height;
    crouching=false;
    }



    void check_see()
    {
    RaycastHit hit;
    CharacterController charContr = GetComponent<CharacterController>();
    Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F;
    Vector3 p2 = p1 + Vector3.up * charContr.height;
    Vector3 fwd = transform.TransformDirection(Vector3.right);
    if (Physics.CapsuleCast(p1, p2, charContr.radius, fwd, out hit, 2f))
    {
    if(hit.transform.tag=="mane1" && !jumping)
    {
    jumping=true;
    do_jump();
    }
    else if(hit.transform.tag=="mane2" && !crouching)
    {
    crouching=true;
    StartCoroutine(do_crouch());
    }
    }
    }
    }




    بر روی پلیر کلیک کنید و بعد Ctrl+d و بعد با استفاده از موس اندکی آبجکت جدید را جابه جا کنید، باید پشت سر پلیر قرار بگیرد و بعد اسکریپت enemy_movement را با آن نسبت می دهیم.

    p2.jpg

    توجه کنید که این کدها بهینه نیستند و در انتهای پروژه تمامی کد ها را بهینه خواهیم کرد.
    پکیج این بخش ضمیمه شد.
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: zip pk02.zip (8.7 کیلو بایت, 338 نمايش)
    امضای ایشان

  6. 33 کاربر به خاطر ارسال مفید admin از ایشان تشکر کرده اند:

    Ali.l (۰۸-۲۵-۱۳۹۲),aliscan (۰۶-۱۲-۱۳۹۲),ali_m_mkh (۰۱-۲۸-۱۳۹۴),amir js (۱۱-۲۰-۱۳۹۲),Aref.Seven (۱۰-۲۷-۱۳۹۲),ata_2 (۰۶-۰۹-۱۳۹۲),big_boss (۰۶-۰۹-۱۳۹۲),blender.man (۰۶-۱۶-۱۳۹۲),kamyiab (۰۵-۰۴-۱۳۹۳),Kaveh.Shahedi (۰۵-۱۱-۱۳۹۳),m.crysis (۰۶-۲۰-۱۳۹۲),mahdi.abdali (۰۵-۲۰-۱۳۹۳),megnatis (۰۳-۱۶-۱۳۹۳),meysam0501 (۰۲-۱۳-۱۳۹۳),mmkhmmkh (۰۶-۱۸-۱۳۹۲),mnkh975 (۰۶-۱۰-۱۳۹۲),mohade3 (۰۸-۰۶-۱۳۹۳),mojighahar (۰۴-۰۸-۱۳۹۳),molavi (۰۶-۱۵-۱۳۹۲),Mosaver (۰۶-۰۹-۱۳۹۲),MR. Garcia (۰۷-۲۹-۱۳۹۳),Mygreenm (۱۱-۱۳-۱۳۹۴),prince_of_persia (۰۶-۱۱-۱۳۹۲),ProUnity (۰۶-۲۷-۱۳۹۲),RafeSafari (۱۲-۲۲-۱۳۹۳),sakht85 (۱۱-۲۶-۱۳۹۲),scorpion_boy17 (۰۶-۲۵-۱۳۹۲),shirinsoft (۰۱-۰۶-۱۳۹۳),sohrab08 (۰۶-۱۱-۱۳۹۲),Survivor (۰۷-۰۳-۱۳۹۳),Unity Gamer (۰۶-۰۹-۱۳۹۲),پترسون (۰۴-۰۶-۱۳۹۴),XRevolution (۰۶-۰۹-۱۳۹۲)

  7. Top | #4

    عنوان کاربر
    تاریخ عضویت
    تی‍ ۱۳۹۲
    شماره عضویت
    3349
    نوشته ها
    158
    تشکر
    79
    تشکر شده 44 بار در 29 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    خواهشا ادامه بدید
    امضای ایشان
    GAMELOVER

  8. 3 کاربر به خاطر ارسال مفید sohrab08 از ایشان تشکر کرده اند:

    ata_2 (۰۶-۱۲-۱۳۹۲),MARVEL121 (۱۱-۱۸-۱۳۹۳),mmkhmmkh (۰۶-۱۸-۱۳۹۲)

  9. Top | #5

    عنوان کاربر
    مدیرکل
    تاریخ عضویت
    ار ۱۳۹۰
    شماره عضویت
    1
    نوشته ها
    975
    تشکر
    1,327
    تشکر شده 554 بار در 144 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان

    Amoozesh آموزش ساخت بازی دو بعدی سبک دونده - از طرح ایده تا خروجی - قسمت3

    در همین ابتدا برای تاخیر در ارسال بخش سه پوزش می خوام.

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

    ما نیاز به حرکت مانع به شکل عمودی داریم ، یعنی جسم باید به صورت رفت و برگشت یا بالا و پایین حرکت کند، برای این کار از متد PingPong موجود در کلاس Mathf استفاده می کنیم. مثال موجود در داکیومنت یونیتی به طور کامل کاربرد این متد را نشان میدهد اما به طور خلاصه بین صفر و یک عددی که ما آن را می دهیم در بازه زمانی که ما وارد می کنیم خروجی تولید می کند، یعنی مثلا با سرعت 10 بین عدد 0 تا 20 به این شکل خروجی می دهد، از صفر تا 20 پیش می رود و بعد از 20 تا 0.

    mathf-pingpong.jpg
    با توجه به مثال داکیومنت یونیتی کد زیر را می نویسیم.


    using UnityEngine;
    using System.Collections;


    public class box_pingpong_movement : MonoBehaviour {


    public int speed=1; // move speed
    public float step=20f;//move step

    private Vector3 default_position;
    private Transform mytransform;
    private Vector3 newpos;

    // Use this for initialization
    void Start () {
    default_position=transform.position;
    mytransform=transform;
    }

    // Update is called once per frame
    void FixedUpdate ()
    {
    mytransform.position =default_position+new Vector3(0,Mathf.PingPong(Time.time*speed, step), 0);
    }
    }





    در کد بالا همه چیز گویاست ، مقدار step همان مقداری است که جسم باید در محور y حرکت کند و مقدار speed سرعت حرکت را مشخص می کند. برای اینکه بتوانیم در هر کجای محیط جسم را به حرکت در آوریم نیاز است تا موقعیت اولیه (یعنی همان مکانی فعلی جسم) را داشته باشیم پس آن را در متغیر default_position ذخیره می کنیم.

    یک فایل سی شارپ با نام کلاس یعنی box_pingpong_movement ایجاد می کنیم و کد بالا را در آن قرار می دهیم ، همچنین فایل کلاس پیوست شده است.

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

    char_unity.jpg

    و بعد از قسمت Project بر روی کاراکتر کلیک می کنیم سپس در قسمت Inspector بر روی تب وسط یعنی Rig کلیک می کنیم و بعد Animation Type را روی Legacy قرار می دهیم و بعد بر روی دکمه Apply کلیک می کنیم.

    char_rig.jpg

    سپس بر روی تب بعدی یعنی Animations کلیک می کنیم.

    char_animations.jpg

    در این قسمت باید انیمیشن کاراکتر را به قسمت های مجزا تقسیم کنیم، مثلا قسمت پرش که از فرم 32 تا 45 است باید به شکل زیر مشخص شود.
    ابتدا بر روی علامت + کلیک می کنیم و بعد از بخش جدیدی که ایجاد شده نام آن را به paresh تغییر می دهیم، از نوار لغزان ابتدا و انتهای فرم های مربوط به پرش را مشخص می کنیم.

    برای اینکه بتوانید انیمیشن را روی کاراکتر ببینید لازم تا کاراکتر را از پنجره project با نشانگر موس بگیرید و در پایین قسمت Inspector در بخش preview رها کنید. (Drag&Drop).
    به همین ترتیب تمام انیمیشن ها را قسمت بندی می کنیم.

    char_animations1.jpg

    من برای اینکه دوباره تنظیمات پلیر را انجام ندهم کاراکتر را زیر مجموعه ی پلیر قبلی می کنم و دیگر نگرانی تنظیمات دوباره موقعیت و جهت پلیر را نخواهم داشت.

    player_char.jpg

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

    بعد از این کار برای نمایش انیمیشن ها باید تغییراتی در اسکرپیت حرکت کارکتر ایجاد کنیم. برای نمایش انیمیشن از دستور CrossFade موجود در کلاس animation استفاده می کنیم. باز هم بهترین مثال در داکیومنت یونیتی آورده شده است و به خوبی نحوه ی استفاده و کارکرد آن را نمایش می دهد.

    کد نهایی به اسن شکل می شود:



    using UnityEngine;
    using System.Collections;


    public class movement : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    public GameObject charcter;
    private Vector3 moveDirection = Vector3.zero;
    private CharacterController controller;

    private float ch_height=2f;
    private float ch_Crouch=1.3f;
    public bool is_Crouch=false;
    void Start()
    {
    controller = GetComponent<CharacterController>();
    charcter=(GameObject)this.transform.FindChild("char").gameObject;
    }
    void Update() {

    if (controller.isGrounded)
    {
    if(is_Crouch)
    {
    charcter.animation.CrossFade("liz");
    }
    else
    {
    charcter.animation.CrossFade("harkat");
    }

    // moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
    //moveDirection = Vector3.right;
    moveDirection = new Vector3(1f,0,0);
    moveDirection = transform.TransformDirection(moveDirection);
    moveDirection *= speed;
    if (Input.GetKeyDown(KeyCode.Z))
    {
    do_jump();
    }
    else if(Input.GetKeyDown(KeyCode.X))
    {
    StartCoroutine(do_crouch());
    }
    }
    else
    {
    charcter.animation.CrossFade("paresh");
    }
    moveDirection.y -= gravity * Time.deltaTime;
    controller.Move(moveDirection * Time.deltaTime);

    }

    void do_jump()
    {
    moveDirection.y = jumpSpeed;
    }

    IEnumerator do_crouch()
    {
    GetComponent<CharacterController>().height=ch_Crouch;
    is_Crouch=true;
    yield return new WaitForSeconds(1f);
    is_Crouch=false;
    GetComponent<CharacterController>().height=ch_height;
    }


    }






    به دلیل اینکه انیمیشن به کاراکتر زیر مجموعه مربوط می شود نیاز است تا دستورات نمایش انیمیشن به کاراکتر زیر مجموعه ارسال شود، برای انجام این کار ابتدا یک متغیر با نام character ایجاد می کنیم، بعد از دو راه می توانیم کاراکتر زیر مجموعه را با آن منتسب کنیم یکی با استفاده از گرفتن و رها کردن مدل از قسمت Hierarchy به قسمت Inspector است و دیگری استفاده از کد، که ما از راه دوم یعنی کد نویسی این کار را انجام دادیم. در متد Start از دستورات زیر برای انجام این کار استفاده شده است.



    charcter=(GameObject)this.transform.FindChild("char").gameObject;




    در قسمت بعد ساخت منو ساده و ساخت فرم ورود و پرفایل کاربری اینگیم (مرکز بازی های مستقل) را یاد خواهیم گرفت.

    دانلود فایل پیوست
    امضای ایشان

  10. 24 کاربر به خاطر ارسال مفید admin از ایشان تشکر کرده اند:

    Ali.l (۰۶-۲۵-۱۳۹۲),aliscan (۰۶-۱۸-۱۳۹۲),alone1992 (۰۶-۱۶-۱۳۹۲),amir js (۱۱-۲۰-۱۳۹۲),Aref.Seven (۱۰-۲۷-۱۳۹۲),arg275 (۰۶-۱۷-۱۳۹۲),ata_2 (۰۶-۱۶-۱۳۹۲),Beny@min (۰۸-۱۶-۱۳۹۴),blender.man (۰۶-۱۶-۱۳۹۲),hiddenart (۱۰-۲۸-۱۳۹۲),kamyiab (۰۵-۰۴-۱۳۹۳),Kaveh.Shahedi (۰۷-۲۱-۱۳۹۳),MARVEL121 (۱۰-۲۵-۱۳۹۳),meysam0501 (۰۲-۱۳-۱۳۹۳),mmkhmmkh (۰۶-۱۸-۱۳۹۲),MR. Garcia (۰۷-۲۹-۱۳۹۳),Mygreenm (۱۱-۱۳-۱۳۹۴),ProUnity (۰۶-۲۷-۱۳۹۲),sakht85 (۱۱-۲۶-۱۳۹۲),scorpion_boy17 (۰۶-۲۵-۱۳۹۲),sohrab08 (۰۶-۱۷-۱۳۹۲),Survivor (۰۷-۰۳-۱۳۹۳),Unity Gamer (۰۶-۱۶-۱۳۹۲),پترسون (۰۴-۰۶-۱۳۹۴)

  11. Top | #6

    عنوان کاربر
    مدیر بخش
    تاریخ عضویت
    ار ۱۳۹۲
    شماره عضویت
    2969
    نوشته ها
    1,151
    تشکر
    494
    تشکر شده 801 بار در 502 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    سلام ادمين
    چرا از
    Animation.Play استفاده نكردي به جاي Animation.Crossfade?
    اين دو تا چه فرقي دارند؟

  12. 2 کاربر به خاطر ارسال مفید blender.man از ایشان تشکر کرده اند:

    MARVEL121 (۱۱-۱۸-۱۳۹۳),meysam0501 (۰۲-۱۳-۱۳۹۳)

  13. Top | #7

    عنوان کاربر
    مدیرکل
    تاریخ عضویت
    ار ۱۳۹۰
    شماره عضویت
    1
    نوشته ها
    975
    تشکر
    1,327
    تشکر شده 554 بار در 144 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    نقل قول نوشته اصلی توسط h-potter نمایش پست ها
    سلام ادمين
    چرا از
    Animation.Play استفاده نكردي به جاي Animation.Crossfade?
    اين دو تا چه فرقي دارند؟
    play انیمیشن رو به صورت ساده نمایش میده یعنی اگه کاراکتر داره راه میره و بعد بخواد پرش کنه یه دفعه انمیشن پرش رو نشون میده ولی crossfade انیمیشن ها رو به صورت fade نشون میده یعنی وقتی کاراکتر داره راه میده بعد یه دفعه بخواد پرش کنه انیمیشن پرش با انیمیشن راه رفتن یه جورایی ادغام میشه و نمیشه تشخص داد که انیمیشن جدید از کجا شروع شده. در کل همون محو شده دو تا انیمیشن در هم هست که باعث میشه کاربر متوجه نقطه شروع انیمیشن بعدی نشه و یه حالت نرم تر و واقعی تر به انیمیشن میده.
    امضای ایشان

  14. 16 کاربر به خاطر ارسال مفید admin از ایشان تشکر کرده اند:

    Ali.l (۰۶-۱۶-۱۳۹۲),alireza124 (۰۷-۱۹-۱۳۹۲),aliscan (۰۶-۱۸-۱۳۹۲),amir js (۱۱-۲۰-۱۳۹۲),Aref.Seven (۱۰-۲۷-۱۳۹۲),blender.man (۰۶-۱۶-۱۳۹۲),hiddenart (۱۰-۲۸-۱۳۹۲),hosein320 (۰۲-۳۱-۱۳۹۳),kamyiab (۰۵-۰۴-۱۳۹۳),meysam0501 (۰۲-۱۳-۱۳۹۳),Mygreenm (۱۱-۱۳-۱۳۹۴),nemantahan (۰۵-۳۱-۱۳۹۴),ProUnity (۰۶-۲۷-۱۳۹۲),sadegh93 (۰۱-۲۵-۱۳۹۳),sohrab08 (۰۶-۱۷-۱۳۹۲),پترسون (۰۴-۰۶-۱۳۹۴)

  15. Top | #8

    عنوان کاربر
    تاریخ عضویت
    تی‍ ۱۳۹۲
    شماره عضویت
    3349
    نوشته ها
    158
    تشکر
    79
    تشکر شده 44 بار در 29 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    سلام خسته نباشی
    من وقتی انیمیت به کاراکترم میدم یک هو کاراکتر غیب میشه چرا؟
    امضای ایشان
    GAMELOVER

  16. کاربر زیر به خاطر ارسال مفید sohrab08 از ایشان تشکر کرده است:

    meysam0501 (۰۲-۱۳-۱۳۹۳)

  17. Top | #9

    عنوان کاربر
    تاریخ عضویت
    تی‍ ۱۳۹۲
    شماره عضویت
    3349
    نوشته ها
    158
    تشکر
    79
    تشکر شده 44 بار در 29 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    درست شد!!!!!!
    امضای ایشان
    GAMELOVER

  18. کاربر زیر به خاطر ارسال مفید sohrab08 از ایشان تشکر کرده است:

    meysam0501 (۰۲-۱۳-۱۳۹۳)

  19. Top | #10

    عنوان کاربر
    تاریخ عضویت
    شه‍ ۱۳۹۲
    شماره عضویت
    3539
    نوشته ها
    8
    تشکر
    4
    تشکر شده 1 بار در 1 ارسال
    مبلغ حمایت شده توسط کاربر
    0 تومان
    سلام.
    لطفا ادامه بدید ما منتظریم.
    راستی برای کسانی که با زبان سی شارپ داخل یونیتی کار می کنن به نظر شما کدوم مجموعه آموزشی بهتره؟

  20. کاربر زیر به خاطر ارسال مفید mmkhmmkh از ایشان تشکر کرده است:

    meysam0501 (۰۲-۱۳-۱۳۹۳)

صفحه 1 از 5 123 ... آخرینآخرین

اطلاعات موضوع

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

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگانی که با جست و جو این صفحه را مشاهده کرده اند:

اموزش ساخت یک بازی دونده در یونیتی برای اندروید

ساخت بازی دونده با یونیتی

ehsan1377.rozblog.com

ساخت بازی با موس در سی شارپ

ساخت بازی رانر دو بعدی

طرح بازی 2 بعدی

ساخت بازی رانر با یونیتی

http:forum.unity3d.irآموزش-یونیتی6692-آموزش-ساخت-بازی-دو-بعدی-سبک-دونده-از-طرح-ایده-تا-خروجی.html

دانلود بازی ساده دوبعدی unity

ساخت بازي رانر با يونيتي

script ابدال المرحلة unity3d

اموزش ساخت بازی رانر در یونیتی

time.time unityسه بعدی سی شارپ

چگونه در یونیتی دوربین را با پلیر یکی کنیم

اموزش برنامه نویسی بازی دونده

آموزش ساخت بازی دو بعدی با c#

اموزش ساخت بازی دوبعدی دونده با یونیتی به زبان فارسی

ساخت بازی سبک رانر اندروید

اموزش تعقیب کردن پلیر توسط دشمن در کانستراکت 2

کد پرش پلیر دو بعدی

سورس بازی رانر برای کانستراکت2

&amp;#1591;&amp;#1585;&amp;#1581; &amp;#1576;&amp;#1575;&amp;#1586;&amp;#1740; &amp;#1575;&amp;#1605;&amp;#1608;&amp;#1586;&amp;#1588;&amp;#1740;

آموزش ساخت بازی دونده برای اندروید

ساخت بازی با c#

بازی سبک دونده

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
موسسه فرهنگی هنری رویش © تمامی حقوق برای مرجع فارسی یونیتی محفوظ می باشد.