Collider Pemicu
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 15 dari 71.
Collider yang kotak centang Is Trigger-nya dicentang tidak lagi padat: Rigidbody melewatinya begitu saja, dan Unity melaporkan tumpang tindih tersebut dengan memanggil OnTriggerEnter pada skrip kedua objek. Garis finis, barang yang bisa diambil, dan zona bahaya menggunakan trigger. Dalam kode, kotak centang tersebut adalah property isTrigger milik collider.
Zona alarm brankas ini mengubah collider-nya menjadi trigger saat game dimulai, sama seperti mencentang kotaknya, lalu membunyikan alarm saat penjaga masuk:
void Start()
{
GetComponent<Collider>().isTrigger = true;
}
void OnTriggerEnter(Collider other)
{
Debug.Log("Alarm!");
}Trigger mengikuti aturan yang sama seperti tabrakan: Unity hanya memeriksa sepasang objek jika setidaknya salah satunya memiliki Rigidbody. Dua objek yang tidak memiliki Rigidbody tidak akan pernah saling melaporkan, baik menggunakan trigger maupun tidak. Penjaga berpatroli menggunakan skrip, jadi setiap penjaga memiliki Rigidbody kinematik (Add Component, Rigidbody, Is Kinematic dicentang): gravitasi dan benturan tidak memengaruhinya, tetapi objek itu tetap dihitung sebagai Rigidbody. Tanpa Rigidbody pada penjaga, penjaga akan melewati zona dan Console tetap kosong. Tanpa isTrigger, zona tersebut menjadi kotak padat, dan benda kinematik tidak pernah menyentuh collider yang tidak memiliki Rigidbody, jadi tetap tidak ada yang dicatat. Satu Rigidbody pada pasangan objek sudah cukup, di salah satu objek. Pelajaran berikutnya membahas other, collider yang masuk.
Tantangan
MudahArahkan drone melewati ring, dan biarkan setiap ring melaporkannya.
- Di
Start()milikDrone.cs, aturbody = gameObject.AddComponent<Rigidbody>();danbody.isKinematic = true;agar drone terbang mendatar. - Di
Start()milikRing.cs, aturGetComponent<Collider>().isTrigger = true;.
Tekan tombol “Main”: drone akan terbang melewati ring, dan Console menampilkan Ring1 passed, Ring2 passed, dan Ring3 passed. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class Ring : MonoBehaviour
{
void Start()
{
// Jadikan collider ring ini sebagai trigger
}
void OnTriggerEnter(Collider other)
{
Debug.Log(name + " passed");
}
}
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur4Coroutine
InvokeInvokeRepeating, CancelInvokeCoroutine PertamamuPerulangan dalam CoroutineMenghentikan CoroutineRangkuman: Hitung Mundur10Proyek: Kabur dari Arena
ArenaPara Pemburu2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa HancurLatihan sendiri: Playground Unity