Distanza tra gli oggetti
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 28 di 85.
Vector3.Distance(a, b) indica quanto sono distanti due punti, in unità, misurati in linea retta lungo tutti e tre gli assi. È la lunghezza del segmento tra loro, (a - b).magnitude, quindi l'ordine di a e b non è importante. Da (0, 0, 0) a (3, 0, 4) è 5.
Confronta una distanza con un numero e uno script saprà quando qualcosa è vicino. Questo campeggiatore può scaldarsi le mani solo entro 4 unità dal falò, la cui posizione viene impostata dall'Inspector:
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}La distanza considera anche l'altezza: un campeggiatore a 5 unità sopra il fuoco si trova a 5 unità di distanza, non a 0. Quando l'altezza non deve essere considerata, confronta due punti con lo stesso valore di y.
Sfida
FacileRallenta il camminatore alla metà della velocità nella palude.
- Sotto
float s = speed;, scriviif (Vector3.Distance(transform.position, swamp) < 3f). - Al suo interno, imposta
s = speed / 2;. Lascia invariati il campospeede le righe di movimento.
Premi «Gioca» e attraversa la palude camminando: il camminatore rallenta al suo interno. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// Entro 3 unità dalla palude, muoviti a metà velocità.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity