22 Haziran 2016 Çarşamba

Unity 3D - Trigger Fonksiyonları

Merhaba arkadaşlar bu dersimizde trigger fonksiyonları hakkında konuşucaz.

Nedir bu Trigger Fonksiyonları peki
  • OnTriggerEnter : Bu fonksiyon collider ve rigidbody bileşenleri üzerinde olan bir obje trigger alanının içerisine girdiğinde çağrılır.
  • OnTriggerStay: Aynı şekilde bir obje trigger alanının içerisinin durduğu sürece çağrılır.
  • OnTriggerExit: Bu fonksiyon ise obje trigger alanından dışarı çıktığı anda çağrılır.
Bu fonksiyonlar çağrıldığında bir parametre gönderir. Bu parametre trigger'ı tetikleyen obje hakkında bilgiler almamızı sağlar.

Örnek kod;
using UnityEngine;
using System.Collections;

public class TriggerKodu : MonoBehaviour {

 void OnTriggerEnter(Collider col)
 {
      Debug.Log("Trigger'a giriş yapıldı.");
 }

 void OnTriggerStay(Collider col)
 {
      Debug.Log("Trigger'da duruluyor.");
 }

 void OnTriggerExit(Collider col)
 {
      Debug.Log("Trigger'dan çıkış yapıldı.");
 }

}


Bu şekilde herhangi bir obje trigger alanının içerisine girdiğinde yukarıda görüldüğü gibi fonksiyonlar çağrılacaktır. Peki bunu filtreliyemez miyiz tabi ki filtreleriz. Örneğin sadece oyuncu objelerinin bu alana girip fonskiyonları tetiklemesini istiyoruz.

Fonskiyonlar çağrıldığında bir parametre gönderiyor demiştim bu parametreyi kullanarak giren objenin etiketine bakarak oyuncu olup olmadğını anlayabiliriz.

 Örnek kod;

using UnityEngine;
using System.Collections;

public class TriggerKodu : MonoBehaviour {

 void OnTriggerEnter(Collider col)
 {
  if(col.gameObject.tag == "Player")
  {
   Debug.Log("Oyuncu trigger'a giriş yaptı.");
  }
 }

 void OnTriggerStay(Collider col)
 {
  if(col.gameObject.tag == "Player")
  {
   Debug.Log("Oyuncu trigger'da duruyor.");
  }
 }

 void OnTriggerExit(Collider col)
 {
  if(col.gameObject.tag == "Player")
  {
   Debug.Log("Oyuncu trigger'dan çıkış yaptı.");
  }
 }
}

Objemizin etiketini "Player" olarak değiştirelim.



Oyunu başlattığımızda gördüğünüz gibi doğru bir şekilde çalıştı. Bu trigger alanına etiketi "Player" olmayan bir obje girdiği zaman yazdığınız kod çağrılmayacaktır. Bundan sonrası size kalmış isterseniz oyuncuya güç verebilir, görünmez yapabilir veya öldürebilirsiniz.



Hiç yorum yok:

Yorum Gönder