Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Il 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
    }
}
quiz iconMettiti alla prova

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