RaycastHit
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 34 dari 63.
Physics.Raycast juga dapat memberi tahu apa yang terkena. Tambahkan out RaycastHit hit setelah arah: ketika method mengembalikan true, method itu telah mengisi hit dengan detailnya. out adalah cara method C# mengembalikan nilai tambahan melalui variabel yang kamu berikan. Pengukur jarak ini mencatat apa yang diarahkan olehnya dan seberapa jauh jaraknya saat kamu menekan Space:
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
{
Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
}
}
}Jika diarahkan ke dinding yang bagian depannya berjarak 12 unit, alat ini mencatat Wall is 12 units away. Field lainnya: hit.point adalah titik di dunia tempat ray menyentuh permukaan, hit.normal adalah arah hadap permukaan di titik tersebut ((0, 1, 0) pada tanah datar), dan hit.transform adalah Transform dari object yang terkena. Melalui hit.collider.gameObject, kamu dapat mengakses hal lain tentangnya, seperti tag-nya.
Baca hit hanya di dalam if. Saat ray meleset, Raycast mengembalikan false dan hit tidak menyimpan apa pun yang berguna: collider-nya adalah null.
Tantangan
SedangBeri senjata itu laser sight. Script LaserSight terpasang pada Gun, dan Inspector memberinya dot merah (sebuah Transform) serta range sebesar 15. Panah kiri dan kanan memutar senjata.
- Setiap frame, tembakkan ray dari senjata ke arah depannya sendiri, sepanjang
rangeunit. - Saat ray mengenai sesuatu, tampilkan dot dan letakkan tepat di tempat ray menyentuh permukaan.
- Saat ray tidak mengenai apa pun, sembunyikan dot dengan
SetActive(false).
Dot berada pada layer Ignore Raycast, jadi ray melewati dot itu sendiri. Tekan Play dan arahkan laser ke dinding, peti, dan tong, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// Tempatkan dot di titik laser mengenai permukaan; sembunyikan dot saat laser tidak mengenai apa pun.
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur