Menu
CoddyTech

Physics.Raycast

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 35 dari 71.

Raycast menembakkan garis tak terlihat dari suatu titik ke satu arah dan melaporkan apakah garis itu mengenai collider. Physics.Raycast(origin, direction, maxDistance) mengembalikan true saat ada collider pada garis dalam jarak maxDistance unit, dan false jika tidak. Mobil ini mengerem saat ada apa pun yang berjarak kurang dari 2 unit di depan hidungnya:

public float brakeDistance = 2f;

void Update()
{
    if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
    {
        Debug.Log("Brake!");
    }
}

transform.forward berputar bersama mobil, jadi ray selalu mengarah keluar dari hidungnya. Vector3.forward akan selalu mengarah ke sumbu z dunia. Ray dimulai dari pusat mobil, di dalam collider-nya sendiri, dan ray tidak pernah melaporkan collider tempatnya dimulai, jadi mobil tidak melihat dirinya sendiri. Jika maxDistance tidak disertakan, ray terus berjalan tanpa batas: mobil akan mengerem karena dinding di seberang peta.

Ray mendeteksi collider, bukan objek yang digambar: objek dengan Renderer tanpa collider tidak terlihat oleh ray, dan collider pemicu dihitung sebagai benturan. Saat menguji, Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) menggambar ray di tampilan Scene Unity.

challenge icon

Tantangan

Sedang

Buat pintu toko terbuka saat seseorang berdiri di bawah sensor.

  1. Di Update(), uji Physics.Raycast(transform.position, Vector3.down, reach): sinar lurus ke bawah sepanjang reach unit, yang berhenti di atas tanah.
  2. Jika hasilnya true, panggil door.SetActive(false);, lalu di bagian else, panggil door.SetActive(true);.

Tekan tombol “Main” dan arahkan Pengunjung berjalan ke bawah sensor: pintu terbuka, lalu tertutup di belakangnya. Kemudian tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class DoorSensor : MonoBehaviour
{
    public GameObject door;
    public float reach = 3f;

    void Update()
    {
        // Buka pintu selama sinar yang mengarah ke bawah dari Sensor mengenai sesuatu.
    }
}

Semua pelajaran di Fisika dan Gameplay

Latihan sendiri: Playground Unity