Physics.Raycast
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 35 di 71.
Un raycast traccia una linea invisibile da un punto in una direzione e indica se ha colpito un collider. Physics.Raycast(origin, direction, maxDistance) restituisce true quando un collider si trova sulla linea entro maxDistance unità e false altrimenti. Questa auto frena quando c'è qualcosa a meno di 2 unità davanti al muso:
public float brakeDistance = 2f;
void Update()
{
if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
{
Debug.Log("Brake!");
}
}transform.forward ruota insieme all'auto, quindi il raggio punta sempre in avanti dal muso; Vector3.forward punterebbe sempre lungo l'asse z del mondo. Il raggio parte dal centro dell'auto, all'interno del suo collider, e un raggio non segnala mai un collider al cui interno inizia, quindi l'auto non vede sé stessa. Se ometti maxDistance, il raggio continua all'infinito: l'auto frenerebbe davanti a un muro dall'altra parte della mappa.
I raggi rilevano i collider, non ciò che viene disegnato: un oggetto con un Renderer e senza collider è invisibile per loro, mentre un collider trigger conta come un impatto. Mentre esegui i test, Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) disegna il raggio nella vista Scene di Unity.
Sfida
MedioFai in modo che la porta del negozio si apra mentre qualcuno si trova sotto il sensore.
- In
Update(), verificaPhysics.Raycast(transform.position, Vector3.down, reach): un raggio diretto verso il basso, lungoreachunità, che si ferma sopra il terreno. - Quando è vero, chiama
door.SetActive(false);e, inelse,door.SetActive(true);.
Premi «Gioca» e fai camminare il Visitatore sotto il sensore: la porta si apre e si chiude alle sue spalle. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class DoorSensor : MonoBehaviour
{
public GameObject door;
public float reach = 3f;
void Update()
{
// Apri la porta finché il raggio diretto verso il basso dal Sensor colpisce qualcosa.
}
}
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