Muoversi verso un punto
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 27 di 67.
Vector3.MoveTowards(current, target, maxStep) restituisce un punto fino a maxStep più vicino a target. Se il target è più vicino di così, restituisce il target stesso, quindi non lo oltrepassa mai. Usando speed * Time.deltaTime come passo, un oggetto si sposta a velocità costante e si ferma esattamente sul target. Questa funivia scivola fino alla stazione a 2 unità al secondo:
public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}Una volta arrivata, ogni chiamata successiva restituisce di nuovo station, quindi la funivia resta ferma e transform.position == station è true. Per un singolo numero, Mathf.MoveTowards funziona allo stesso modo.
Vector3.Lerp(a, b, t) è il punto che si trova a una frazione t del percorso da a a b: con t = 0.5 è a metà strada. Scritta come Lerp(transform.position, station, 2f * Time.deltaTime) in Update(), percorre una parte della distanza rimanente a ogni frame: velocemente all'inizio, sempre più lentamente verso la fine, avvicinandosi progressivamente invece di arrivare a una velocità prestabilita. Usa MoveTowards quando un oggetto deve spostarsi a una velocità prestabilita e fermarsi esattamente; usa quel modello di Lerp per un rallentamento graduale.
Sfida
MedioIl drone resta in aria finché non premi Space. Da quel momento vola in linea retta verso pad, la posizione della piattaforma di atterraggio, a speed unità al secondo, e atterra esattamente su di essa. Quando atterra, registra Landed una sola volta, non di nuovo a ogni frame successivo.
Premi Play, premi Space, poi Check.
Provalo tu
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// Dopo Space: vola verso pad alla velocità speed e registra Landed una sola volta all'arrivo
}
}
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