Çarpışma olayları
- Oyun Geliştirme kursu
- Başlangıç
- Ders 52/83
- 4 dk
OnCollisionEnter, OnCollisionExit ve OnCollisionStay'i öğrenirsin.
Çarpışma olayları (Collision Events)
İki katı Collider birbirine çarptığında Unity otomatik olarak çarpışma olaylarını tetikler. Bu olayların tetiklenmesi için nesnelerden en az birinde aktif bir Rigidbody bulunmalıdır.
// İlk temas anında çalışan metot
void OnCollisionEnter(Collision collision) {
Debug.Log("Çarpışma oldu: " + collision.gameObject.name);
}Collision nesnesi çarpışmanın temas noktaları, darbe şiddeti ve çarpan cisim hakkında zengin veriler sunar.
OnCollisionStay ve OnCollisionExit
Çarpışma anı üç aşamalı bir yaşam döngüsüne sahiptir: temasın başladığı ilk an OnCollisionEnter, temas sürerken OnCollisionStay ve nesneler ayrıldığında OnCollisionExit çalışır.
void OnCollisionExit(Collision collision) {
Debug.Log("Nesneler birbirinden ayrıldı.");
}Örneğin bir karakterin zeminde durduğunu doğrulamak için Enter ile durum açılıp Exit ile kapatılabilir.
Uygulama Çarpışma olayını yazdır
collisionState değişkenine "OnCollisionEnter" ve target değişkenine "Wall" değerini ata. Ekrana Event: OnCollisionEnter | Target: Wall yazdır.
Başlangıç kodu
using System;
class Program
{
static void Main()
{
// collisionState ve target değerlerini tanımlayıp yazdır
}
}Örnek çözüm
using System;
class Program
{
static void Main()
{
string collisionState = "OnCollisionEnter";
string target = "Wall";
Console.WriteLine("Event: " + collisionState + " | Target: " + target);
}
}Beklenen çıktı
Event: OnCollisionEnter | Target: Wall
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İki katı nesne birbirine temas etmeyi sürdürdüğü her fizik karesinde hangi fonksiyon çağrılır?
- OnCollisionStart
- OnTriggerOnce
- OnCollisionStay Doğru cevap
- OnCollisionStop
Açıklama: OnCollisionStay, temas devam ettiği müddetçe her FixedUpdate adımında düzenli olarak yürütülür.
2 Çarpışma başlangıç metodunu tanımla
void ____(Collision collision)
void OnCollisionEnter(Collision collision)
Açıklama: Unity'de katı çarpışmanın ilk karesini yakalayan standart geri çağırma metodu OnCollisionEnter'dır.
3 Çarpışma olay döngüsü
| Kavram | Anlamı |
|---|---|
OnCollisionEnter |
İlk temas anında bir kez çalışır |
OnCollisionStay |
Temas süresince her kare çalışır |
OnCollisionExit |
Ayrılma anında tetiklenir |
Collision |
Çarpışma verisini taşıyan sınıf |