Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
2D Oyun Geliştirme

Unity'de OnCollisionStay2D Metodu: Çarpışma Sürecinde Nesneleri Kontrol Etme

Paylaşan: Unity Eğitim 24 September 2025 3 dakika okuma 141 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity'nin 2D fizik motorunda çarpışma tespiti için kullanılan önemli bir metod olan OnCollisionStay2D() metodunu detaylı bir şekilde inceleyeceğiz. Bu metod, iki 2D Collider'ın birbirleriyle temas halinde kaldığı süre boyunca sürekli olarak çağrılır ve bu sayede çarpışma süresince farklı etkileşimler yaratmamıza olanak tanır.

OnCollisionStay2D Metodunun Temelleri


OnCollisionStay2D() metodu, Collision2D adlı bir parametre alır. Bu parametre, çarpışmaya dahil olan iki oyun nesnesi arasındaki çarpışma verilerini içerir. Bu veriler sayesinde çarpışmanın gücünü, temas noktasını ve diğer önemli bilgileri elde edebiliriz. Metod, iki Collider temas halinde kaldığı sürece her FixedUpdate() çağrısında tetiklenir. Bu, fizik güncellemelerinin sıklığıyla aynı anlamına gelir.

Collision2D Parametresi


Collision2D parametresi, aşağıdaki gibi birçok yararlı bilgi sunar:

  • collider: Çarpışmaya giren diğer Collider bileşeni.

  • gameObject: Çarpışmaya giren diğer GameObject.

  • relativeVelocity: Çarpışan iki nesne arasındaki göreli hız.

  • contacts: Çarpışma noktalarını içeren bir dizi ContactPoint2D.

  • impulse: Çarpışmanın anlık kuvvetini temsil eden bir vektör.


Bu bilgileri kullanarak, çarpışmaya özel tepkiler oluşturabilir ve oyun mantığınızı geliştirebilirsiniz.

OnCollisionStay2D Örneği: Basit Bir İtme Mekaniği


Şimdi, OnCollisionStay2D() metodunu kullanarak basit bir itme mekaniği oluşturalım. Bu örnekte, oyuncunun bir platforma çarptığında platformu itmesini sağlayacağız.

using UnityEngine;

public class PlayerPush : MonoBehaviour
{
public float pushForce = 10f;

private void OnCollisionStay2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Platform"))
{
Vector2 pushDirection = (collision.transform.position - transform.position).normalized;
collision.rigidbody.AddForce(pushDirection * pushForce);
}
}
}


Bu kodda, "Platform" tag'ine sahip bir nesneyle çarpışma durumunda, platformun Rigidbody bileşenine bir kuvvet uyguluyoruz. pushForce değişkeni itme kuvvetini kontrol eder. normalized metodu, kuvvet vektörünü normalize ederek kuvvetin büyüklüğünü sabit tutar.

OnCollisionStay2D ve Performans


OnCollisionStay2D() metodu, çarpışma süresince sürekli çağrıldığından, performansınızı etkileyebilir. Özellikle çok sayıda çarpışma varsa, bu metodun içindeki kodun verimli olması önemlidir. Gereksiz hesaplamaları en aza indirmeye çalışın ve mümkün olduğunca pahalı işlemleri önleyin.

OnCollisionStay2D, OnCollisionEnter2D ve OnCollisionExit2D Arasındaki Farklar


OnCollisionStay2D(), OnCollisionEnter2D() ve OnCollisionExit2D() metotları, çarpışma olaylarını yönetmek için kullanılır. Aralarındaki temel farklar şu şekildedir:

  • OnCollisionEnter2D(): İki Collider ilk temas kurduğunda bir kere çağrılır.

  • OnCollisionStay2D(): İki Collider temas halinde kaldığı sürece her FixedUpdate() çağrısında çağrılır.

  • OnCollisionExit2D(): İki Collider temasını kaybettiğinde bir kere çağrılır.


Uygulama senaryonuza göre bu metotları uygun şekilde kullanmalısınız. Örneğin, sürekli bir etkileşim için OnCollisionStay2D(), çarpışmanın başlangıcı ve sonu için ise OnCollisionEnter2D() ve OnCollisionExit2D() metotlarını kullanabilirsiniz.

İleri Seviye Uygulamalar


OnCollisionStay2D() metodu, karmaşık oyun mekanikleri oluşturmak için de kullanılabilir. Örneğin, karakterin bir yüzeye tutunmasını, nesnelerin birbirine yapışmasını veya sürtünme etkilerini simüle etmek için bu metodu kullanabilirsiniz. Ayrıca, Collision2D parametresindeki verileri kullanarak daha gerçekçi fizik simülasyonları geliştirebilirsiniz.

Bu yazıda, OnCollisionStay2D() metodunun temellerini, kullanım örneklerini ve performans konularını ele aldık. Umarım bu bilgiler, Unity oyun geliştirme sürecinizde size yardımcı olur.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!