یک سایت خصوصی برای نوشته های غیر خصوصی

۶ مطلب در فوریه ۲۰۱۷ ثبت شده است

تشخیص برخورد دو جسم در Unity

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


void OnTriggerEnter(Collider other) 
    {
        if (other.gameObject.CompareTag("PickUp"))
        {
            other.gameObject.SetActive (false);         }     }
هر موقع برخوردی بین شی ما و اشیا دیگر رخ بده این تابع فراخوانی میشه ، و با other.gameobject به شی دیگر دسترسی داریم و با gameobject به شی خودمان. توجه کنید که باید چک شود که آیا به جسم مورد نظر خوردیم یا نه . که از طریق مقایسه تگ انجام میشه .

در ضمن باید در قسمت collider تیک is trigger روی برای اجسامی که قراره تابع رو فراخوانی کنند فعال بشه


۲ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh

آشنایی با Mesh Colider در Unity

اگر دو شی با هم برخورد نمی کنند و از هم رد میشن مثل شکل زیر :




در بخش mesh colider میشه مشخص کرد که محدوده ی یک جسم چقدره. و اگر گزینه ی convex روشن باشه جسم میتونه با بقیه اجسام برخورد داشته باشه.

Mesh Colliders that are marked as Convex can collide with other Mesh Colliders.

۰ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh

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

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

اول بازی موقعیت دوربین و شی رو میگیریم و از هم کم می کنیم . این مقدار رو با نام offset ذخیره می کنیم. حالا در تابع lastupdate مختصات دوربین رو به این صورت تغییر میدید که ، دوربین با همان افست نسبت به شی حرکت کند.

کدش هم به صورت زیر:

سوال داشتین https://t.me/salamis01 در تلگرام جوابگو هستم.

این هم کد مربوط به این بخش:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript1 : MonoBehaviour {     public GameObject player;     private Vector3 offset;     void Start () {
        offset = transform.position - player.transform.position;
    }     void LateUpdate () {
        transform.position = player.transform.position + offset;
    } }


۰ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh

حرکت دادن یک شی با کیبرد در Unity

برای اینکه یک rigidbody رو با کیبرد یا موس تکون بدید از کد زیر استفاده می کنیم.


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

 public class NewBehaviourScript : MonoBehaviour {     public float speed;     private Rigidbody rb;     void Start ()     {         rb = GetComponent<Rigidbody>();     }     void FixedUpdate ()     {         float moveHorizontal = Input.GetAxis ("Horizontal");         float moveVertical = Input.GetAxis ("Vertical");         Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);         rb.AddForce (movement * speed);     }
}
خب اول یک متغییر از جنس rigidbody میسازیم . در قسمت استارت اون شی رو به متغییری که تعریف کردیم اضافه می کنیم. در FixUpdate دو خط اول ورودی ها رو اسکن میکنه ، خط بعدی یک متغییر از نوع Vector3 میسازه ، و در اخر هم با تابع addforce به جسم نیرو وارد میکنیم
۲ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh

فرق Update و FixUpdate و LateUpdate

وقتی یک بازی طراحی می کنید در هر فرم Frame باید محاسبات به روز رسانی بشه . منظور از محاسبات مکان اجسام ، سرعت ، جهت و اینکه کاربر داره چه ورودی هایی وارد می کنه. برای اینکار دوتا انتخاب داریم :
استفاده از Update یا FixUpdate

Update دقیقا قبل از rendering یک فرم فراخوانی میشه و بیشتر بازی در این قسمت نوشته میشه.
FixUpdate قبل از انجام محاسبات فیزیکی بازی انجام میشه. و اینجاست که کدهای مربوط به فیزیک رو باید نوشت.

اگر با مفاهیم شی گرایی و سی شارپ هستید یادگیری این موتور براتون لذت بخش خواهد بود.
می تونید جلسه سوم و چهارم این لینک رو برای اشنایی با محیط و مقدمات دانلود کنید.

LateUpdate هم در واقع مثل update است اما وقتی رخ می دهد که به طور قطعی مطمین هستیم همه ی اتفاقات توی update رخ داده است
۰ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh

موتور بازی سازی Unity

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

برای دانلود می تونید از سایت های ایرانی نسخه ی pro رو به صورت کرک شده دریافت کنید.در حال حاضر آخرین نسخه اش 5.5.1 .بخش های مختلفی که برای دانلود هست به این صورته:
1-برنامه ی unity (از این لینک دانلود کنید نسخه ی 32 یا 64 بیتی )
2.Doc 
3.standard assets
4. modules

که شما برای شروع یادگیری فقط به قسمت 1 و 2 نیاز دارید.
در نسخه های 5.3 به بعد دیگه Doc رو باید جدا نصب کنید

برای دانلود جداگانه ی doc های unity به صورت افلاین به لینک برید. با دانلود این برنامه UnityDownloadAssistant می تونید doc رو دانلود کنید که حدود 300 مگ هست. بعدا از همین برنامه UnityDownloadAssistant  میتونید برای دانلود موارد 3 و 4 هم استفاده کنید.





۰ نظر موافقین ۰ مخالفین ۰
Amir Farahbakhsh