Distanza tra gli oggetti
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 21 di 67.
Vector3.Distance(a, b) indica quanto sono distanti due punti, in unità, misurando in linea retta lungo tutti e tre gli assi. È la lunghezza del passo 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 tiene conto anche dell’altezza: un campeggiatore che si trova 5 unità sopra il fuoco è a 5 unità da esso, non a 0. Quando l’altezza non deve essere considerata, confronta due punti con lo stesso valore di y.
Sfida
FacileIl personaggio attraversa una palude. Entro 3 unità dal centro della palude, swamp (impostato nell'Inspector), si muove a metà della sua speed; più lontano, si muove alla velocità massima. Il codice di movimento è già scritto: calcola la velocità da usare a ogni frame e lascia invariato il campo speed.
Premi Play e attraversa la palude, poi premi Check.
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;
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di scripting in Unity
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce