Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Arahkan drone melewati ring, dan biarkan setiap ring melaporkannya.

  1. Di Start() milik Drone.cs, atur body = gameObject.AddComponent<Rigidbody>(); dan body.isKinematic = true; agar drone terbang mendatar.
  2. Di Start() milik Ring.cs, atur GetComponent<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

Latihan sendiri: Playground Unity