OnCollisionEnter
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 8 / 71.
İki çarpıştırıcı birbirine dokunmaya 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 birinde fiziğin hareket ettirdiği bir Rigidbody bulunmalıdır: Rigidbody bileşeni olmayan bir duvar ve zemin birbirlerine hiçbir bildirim göndermez.
Bu sandık yere indiğinde bir kayıt oluşturur. Bir Rigidbody bileşeni olduğu için düşer ve mesaj, zemine çarptığı fizik adımında gelir:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Thud!");
}Sandık bir kez kayıt oluşturur; bunu ancak zeminden ayrılıp ikinci kez indiğinde tekrar yapar. Zemin de mesajı alır: Üzerindeki bir betik, zeminde Rigidbody bileşeni olmasa bile sandığın inişini algılar. Metodun adı ve parametresi tam olarak doğru olmalıdır. onCollisionEnter adlı bir metot, herhangi bir hata vermeden hiçbir zaman çağrılmaz. Collider parametresi alan bir metot için Unity Script error: OnCollisionEnter hatasını ve This message parameter has to be of type: Collision mesajını kaydeder ve metodu yok sayar. İki nesne temas hâlinde kaldığı sürece Unity her fizik adımında OnCollisionStay metodunu çağırır; nesneler ayrıldığında ise OnCollisionExit metodunu bir kez çağırır.
Görev
KolayBasınç plakası üzerine neyin düştüğünü sayar.
PressurePlatesınıfınaprivate int presses;alanını ekle.void OnCollisionEnter(Collision collision)ekle:pressesdeğerini 1 artır ve"Pressed " + pressesifadesini günlüğe kaydet.
“Oyna” düğmesine bas: sandık düşer ve Konsol'da bir kez Pressed 1 görünür. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class PressurePlate : MonoBehaviour
{
// Her inişi say ve kayda geçir: Pressed 1, Pressed 2, ...
}
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir DuvarKendi başına pratik yap: Unity playground