Menu
CoddyTech

OnCollisionEnter

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 8 / 63.

İki çarpıştırıcı birbirine değmeye başladığında Unity, her iki nesnenin de betiklerinde OnCollisionEnter(Collision collision) metodunu çağırır. Bu metot, temasın başladığı fizik adımında bir kez çağrılır; nesneler temas hâlinde kaldığı sürece tekrar çağrılmaz. Bir çarpışmanın gerçekleşmesi için iki nesneden en az birinin fiziğin hareket ettirdiği bir Rigidbody bileşenine sahip olması gerekir: Rigidbody bileşeni olmayan bir duvar ve zemin birbirlerine hiçbir şey bildirmez.

Bu sandık yere indiğinde bir kayıt oluşturur. Rigidbody bileşeni vardır, bu yüzden düşer ve mesaj, zeminle buluştuğu adımda gelir:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Thud!");
}

Sandık bir kez kayıt oluşturur; yeniden kayıt oluşturması için önce zeminden ayrılıp ikinci kez yere inmesi gerekir. Zemin de mesajı alır: üzerindeki bir betik, Rigidbody bileşeni olmasa da sandığın yere indiğini algılar. Metodun adı ve parametresi tam olarak doğru olmalıdır. onCollisionEnter adlı bir metot hiçbir hata vermeden çağrılmaz. Collider alan bir metot için Unity, Script error: OnCollisionEnter ile birlikte This message parameter has to be of type: Collision mesajını kaydeder ve metodu yok sayar. İki nesne temas hâlindeyken Unity her fizik adımında OnCollisionStay metodunu çağırır; nesneler ayrıldığında ise OnCollisionExit metodunu bir kez çağırır.

challenge icon

Görev

Kolay

Basınç plakası üzerine düşenleri sayar. Plakanın Rigidbody bileşeni yoktur; üzerindeki sandığın Rigidbody bileşeni vardır ve plakanın üzerine düşer.

  • Bir şey plakaya her dokunmaya başladığında sayaca 1 ekle ve bunu kaydet: Pressed 1, sonra Pressed 2 ve bu şekilde devam et.
  • Plakanın üzerinde duran bir şey, ne kadar süre kalırsa kalsın bir kez sayılır.

Play'e bas ve Console'u izle, ardından Check'e tıkla.

Kendin dene

using UnityEngine;

public class PressurePlate : MonoBehaviour
{
    // Her inişi say ve günlüğe kaydet: Pressed 1, Pressed 2, ...
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fizik ve Oynanış bölümündeki tüm dersler