RaycastHit
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 36 di 71.
Physics.Raycast può anche dirti cosa ha colpito. Aggiungi out RaycastHit hit dopo la direzione: quando il metodo restituisce true, ha riempito hit con i dettagli. out è il modo in cui un metodo C# restituisce un valore aggiuntivo tramite una variabile che gli fornisci. Questo telemetro registra a cosa è puntato e a quale distanza si trova quando premi Spazio:
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");
}
}
}Puntato verso un muro la cui parte anteriore si trova a 12 unità di distanza, registra Wall is 12 units away. Gli altri campi: hit.point è il punto nel mondo in cui il raggio ha toccato la superficie, hit.normal è la direzione verso cui è rivolta la superficie in quel punto ((0, 1, 0) su un terreno pianeggiante) e hit.transform è il Transform dell'oggetto colpito. Tramite hit.collider.gameObject puoi raggiungere qualsiasi altra informazione relativa all'oggetto, come il suo tag.
Leggi hit solo all'interno dell'if. Quando il raggio non colpisce nulla, Raycast restituisce false e hit non contiene nulla di utile: il suo collider è null.
Sfida
MedioAggiungi un mirino laser alla pistola: un punto rosso nel punto in cui arriva il laser.
- In
Update(), esegui il raycastPhysics.Raycast(transform.position, transform.forward, out RaycastHit hit, range). - Quando colpisce qualcosa, chiama
dot.gameObject.SetActive(true);e impostadot.position = hit.point;. - Quando non colpisce nulla, chiama
dot.gameObject.SetActive(false);.
Premi «Gioca» e gira la pistola: il punto scivola sulla parete e sulle casse. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// Posiziona dot dove il laser incontra una superficie; nascondilo quando il laser non colpisce nulla.
}
}
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity