Unity 3D Objelerin Çarpışma Kontrolü (Collider, Collision)

ücretsiz unity eğitim serisi

Bu derste, Unity 3D’nin yerleşik çarpışma sistemini tanıtacağım. Oyun nesnelerinize çarpıştırıcı ve katı elemanlar eklemeyi, aralarındaki çarpışmaların nasıl algılandığını ve bunlara nasıl tepki vereceğini ve fizik motoru tarafından tetiklenen olayları komut dosyasıyla nasıl çarpıştıracağınızı ve dinleyeceğinizi ele alacağız. Bu eğitimin amacı için bir 3D proje kullanacağız. Unity editörüne aşina olmanın yanı sıra temel C # kodlama becerilerine sahip olduğunuzu ve boş oyun nesneleri oluşturma, oyun nesnelerini yuvalama, etiket ve katman ayarlama ve bileşen ekleme gibi temel işlemleri nasıl yapacağınızı bildiğimi varsayacağım. Not: Bu ders Unity 4’e dayanmaktadır. Ekran görüntüleri 4.5.1 sürümünden alınmıştır. Yeni sürümler dağıtıldıkça, editördeki menüler, adlar veya düzen farklı olabilir.

Çarpışma Alanı Belirlemek (Objeye Collider Eklemek) 

Unity’de yeni bir oyun nesnesi oluştururken, ilgili nesneyi seçtikten sonra, Inspector penceresinden yeni bileşenler (component) ekleyebiliriz. Collisionlar Fizik(Pyhsics) sekmesinin altında bulunur. Aratarak da bulabilirsiniz.

Box Collider, çarpışmaların algılanacağı bir küp alanı tanımlar. Inspector’ı kullanarak kutunun merkezini ve boyutunu tanımlayabilirsiniz.

Sphere Collider benzer, ancak bunun yerine küresel bir hacim kullanıyor. Son olarak, Capsule Collider çarpışma tespiti için Capsule hacmini tanımlar. Bu durumda, kapsülün yüksekliğini ve yönlendirme eksenini de tanımlayabilirsiniz.

unity box collider ekleme çarpışma kontrolü

Rigidbody Bileşeni Ekleme

Nesnenizin diğer nesnelerle fiziksel çarpışmaya tepki vermesini istiyorsanız, bir Rigidbody bileşeni eklemeniz gerekir. Sert gövdeli bir oyun nesnesi yerçekimi ve dış kuvvetlerden etkilenir.

Test etmek için Standart Assets’lerde mevcut olan player character’i kullanabilirsiniz.

unity rigidbody bileşeni ekleme

Çarpışma Kontrolü

Aşağıdaki C# scriptimizi oluşturuyoruz ve karakterimizin inspector penceresine sürükleyip bırakıyoruz.

using UnityEngine;
using System.Collections;

public class CollisionTutorialScript : MonoBehaviour
{

    void OnCollisionEnter(Collision collisionInfo)
    {
        print(gameObject.name + " ve " + collisionInfo.collider.name +" arasında çarpışma algılandı.");
    }

    void OnCollisionStay(Collision collisionInfo)
    {
        print(gameObject.name + " ve " + collisionInfo.collider.name + " hala çarpışıyor.");
    }

    void OnCollisionExit(Collision collisionInfo)
    {
        print(gameObject.name + " ve " + collisionInfo.collider.name + " artık çarpışmıyor.");
    }
}

 

MonoBehavior’ın sağladığı fonksiyonlardan OnCollisionEnter ilk çarpışma olduğu anda tetiklenir. OnCollisionStay ise devamlılık durumunda tetiklenirken OnCollisionExit çarpışma sonlandığında tetiklenir. MonoBehavior sınıfının diğer fonksiyonlarını incelemek için buraya tıklayabilirsiniz.

Trigger Çarpışmalar

Collider’i trigger olarak tanımlanmış bir cisim fiziksel olarak çarpışmayı deaktif hale getirir. Fakat yine de çarpışmayı algılayabiliriz. Oluşturduğumuz küp içindeki Box Collider bileşenindeki Is Trigger özelliğini işaretleyelim. Ve Kodlarımızı aşağıdaki şekilde değiştirelim.

using UnityEngine;
using System.Collections;

public class CollisionTutorialScript : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        print("Yandaki objenin içine girdik. " + other.name);
    }

    void OnTriggerStay(Collider other)
    {
        print("Hala içindeyiz. " + other.name);
    }

    void OnTriggerExit(Collider other)
    {
        print("Artık yandaki objenin içinde değiliz. " + other.name);
    }
}

 

Unity3d ile çarpışmaları inceledik. Sormak istediğiniz soruları yorum kısmında belirtebilirsiniz.

Unity Ders Listesini görüntüleyin.