Ada dua method dalam mendeteksi tubrukan melalui Collider, yaitu void OnTrigger dan void OnCollision. Keduanya memiliki teknik penulisan yang sama dan fungsi yang sama tapi ada beberapa perbedaan dari kedua method tersebut.
1. Contoh Penulisan
// Method OnTrigger
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "Enemy"){
Destroy (other.gameObject);
}
}
// Method OnCollision
void OnCollisionEnter (Collision col){
if (col.gameObject.tag == "Enemy"){
Destroy(col.gameObject);
}
}
Perbedaan utama kedua method ini ada pada menu collider yang digunakan di jendela inspektor.
Is Trigger
Collider secara umum adalah pembatas antar objek, jadi jika pada objek A dan Objek B terdapat collider maka satu sama lain tidak dapat saling menembus, jika hanya salah satu yang memiliki collider maka dapat menembus antar objek.
Kondisi yang terjadi pada Is Trigger adalah :
- Jika diceklis, maka meski objek tersebut memiliki collider tapi dapat ditembus. Dan komponen collider tidak hilang serta tetap dapat mendeteksi objek lain.
- Jika tidak diceklis, maka objek tidak dapat ditembus/menembus dan tetap dapat mendeteksi objek lain
Apa hubungannya sama method OnTrigger dan OnCollision ?
A. OnTrigger
Method OnTrigger digunakan ketika Is Trigger diceklis, objek dapat ditembus tapi objek tetap dapat mendeteksi objek lain ketika objek tersebut menyentuh collider.
Ada 3 keadaan ketika objek dideteksi :
1. Ketika objek baru nyentuh collider (enter)
void OnTriggerEnter()
2. Ketika objek berada di dalam collider (stay)
void OnTriggerStay()
3. Ketika objek keluar dari collider (exit)
void OnTriggerExit()
B. OnCollision
Method OnCollision digunakan ketika Is Trigger tidak diceklis, dalam artian objek tersebut dapat berbenturan.
Ada 3 keadaan ketika objek dideteksi :
1. Ketika objek baru nyentuh collider (enter)
void OnCollisionEnter()
2. Ketika objek menmpel pada collider (stay)
void OnCollisionStay()
3. Ketika objek meninggalkan collider (exit)
void OnCollisionExit