Merhaba arkadaşlar. Bu yazıda Unity’de collision ve trigger yakalama yöntemlerinden bahsedeceğim. Unity oyun motorunda, nesnelerin birbiriyle veya diğer nesnelerle etkileşime girmesini yakalamak için çeşitli yöntemler kullanılabilir. Bu yöntemlerden ikisi, collider ve trigger’lardır.
Collider, bir nesnenin başka bir nesneyle çarpıştığında tetiklenen bir nesnedir. Trigger ise, bir nesnenin başka bir nesneye girdiğinde veya çıktığında tetiklenen bir nesnedir.
Collider ve trigger yakalama, oyunlarda çeşitli amaçlar için kullanılabilir. Örneğin, bir nesnenin başka bir nesneyle çarpışmasını kullanarak bir oyun mekaniği oluşturabilir veya bir nesnenin başka bir nesneye girdiğini veya çıktığını kullanarak bir animasyon başlatabilirsiniz.
▌OnCollisionEnter, OnCollisionStay ve OnCollisionExit Fonksiyonları
Unity, collider ve trigger yakalamak için çeşitli fonksiyonlar sağlar. Bu fonksiyonlardan en yaygın kullanılanları, OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonlarıdır.
▌OnCollisionEnter
OnCollisionEnter fonksiyonu, bir nesnenin başka bir nesneyle ilk kez çarpıştığında tetiklenir.
▌OnCollisionStay
OnCollisionStay fonksiyonu, bir nesne başka bir nesneyle çarpıştığında ve çarpışma devam ettiğinde tetiklenir.
▌OnCollisionExit
OnCollisionExit fonksiyonu, bir nesne başka bir nesneyle çarpıştığında ve çarpışma sona erdiğinde tetiklenir.
Bu fonksiyonları kullanmak için, nesnenin Collider bileşenine OnCollisionEnter, OnCollisionStay veya OnCollisionExit fonksiyonunu eklemeniz gerekir.
▌Name ile Collision Yakalama
Unity, name özelliğini kullanarak belirli bir nesneyle çarpışmayı yakalamak için bir yöntem sağlar. Bunu yapmak için, OnCollisionEnter, OnCollisionStay veya OnCollisionExit fonksiyonunun collider parametresine name özelliğini ekleyebilirsiniz.
Örneğin, aşağıdaki kod, Player adındaki bir nesnenin Enemy adındaki bir nesneyle çarpışmasını yakalar:
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Enemy")
{
// Enemy nesnesi ile çarpıştık
}
}
▌Rigidbody Bileşeni
OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonları, Rigidbody bileşenine sahip nesnelerde çalışır. Rigidbody bileşeni, bir nesnenin hareketini ve hızını kontrol etmek için kullanılır.
▌isKinematik Özelliği
isKinematik özelliği, bir nesnenin hareketinin fizik tarafından kontrol edilip edilmeyeceğini belirler. isKinematik özelliği true olarak ayarlanmış bir nesne, fizik tarafından kontrol edilmez ve OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonları tarafından yakalanmaz.
▌OnTriggerEnter, OnTriggerStay ve OnTriggerExit Fonksiyonları
OnTriggerEnter, OnTriggerStay ve OnTriggerExit fonksiyonları, OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonlarına benzer şekilde çalışır. Ancak, bu fonksiyonlar Trigger bileşenleri için kullanılır.
▌Objelere Tag Ekleme
Tag özelliği, bir nesneye tanımlayıcı bir etiket eklemek için kullanılır. Tag’ler, OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonlarını kullanarak belirli nesneleri yakalamak için kullanılabilir.
▌Objelere Tag Nasıl Eklenir?
Tag eklemek istediğiniz objeyi seçin ve Inspector ekranından Tag yazısının karşısındaki seçenekten istediğiniz Tag’i ekleyebilirsiniz.
▌CompareTag ile Collider Yakalama
CompareTag özelliği, OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonlarını kullanarak belirli tag’lere sahip nesneleri yakalamak için kullanılabilir.
▌CompareTag ile Collider Yakalama için Kod
Aşağıdaki kod, Player adındaki bir nesnenin Enemy tag’ine sahip nesnelerle çarpışmasını yakalar:
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemy"))
▌Tag ile CompareTag arasındaki fark ve performansa etkisi
Tag ve CompareTag özellikleri, OnCollisionEnter, OnCollisionStay ve OnCollisionExit fonksiyonlarını kullanarak belirli nesneleri yakalamak için kullanılabilir. Ancak, bu iki özellik arasında bazı farklar vardır.
Tag özelliği, bir nesneye basitçe bir etiket eklemek için kullanılır. CompareTag özelliği ise, bir nesnenin tag özelliğini karşılaştırmak için kullanılır.
Bu fark, performansa da yansır. Tag özelliğini kullanmak, CompareTag özelliğini kullanmaktan daha az performanslı olabilir. Bunun nedeni, Tag özelliğinin, nesnenin tag özelliğini bir kez okuması yeterliyken, CompareTag özelliğinin, nesnenin tag özelliğini her seferinde karşılaştırması gerektiğidir.
▌Collision ve Collider Arasındaki Farklar
Collision ve collider, Unity oyun motorunda nesnelerin etkileşimlerini yakalamak için kullanılan iki farklı kavramdır.
Collision, iki nesnenin çarpışmasını temsil eder. Collider ise, bir nesnenin çarpışmayı algılamak için kullandığı bir nesnedir.
Collision, collider’ın bir özelliğidir. Bir collider, bir collision oluşturabilir.
▌Objeleri Neden Yakalamaya İhtiyacımız Var?
Unity oyun motorunda, nesnelerin birbiriyle etkileşime girmesini yakalamak için çeşitli yöntemler kullanılabilir. Bu yöntemlerden biri, collision ve trigger yakalamadır.
Collision ve trigger yakalama, oyunlarda çeşitli amaçlar için kullanılabilir. Örneğin, bir nesnenin başka bir nesneyle çarpışmasını kullanarak bir oyun mekaniği oluşturabilir veya bir nesnenin başka bir nesneye girdiğini veya çıktığını kullanarak bir animasyon başlatabilirsiniz.
Örneğin, bir platform oyunu yapıyorsanız, oyuncunun platformlara çarpmasını yakalamak için collision yakalama kullanabilirsiniz. Bu, oyuncunun platformlardan düşmesini önlemeye yardımcı olur.
Ya da bir FPS oyunu yapıyorsanız, düşmanın oyuncuya ateş etmesini yakalamak için trigger yakalama kullanabilirsiniz. Bu, oyuncunun düşman tarafından vurulmasını önlemeye yardımcı olur.
Sonuç olarak, collision ve trigger yakalama, Unity oyun motorunda nesnelerin etkileşimlerini yakalamak için önemli bir kavramdır. Bu kavramları kullanarak, oyunlarınızda daha karmaşık ve ilgi çekici mekanikler oluşturabilirsiniz.