Menu
CoddyTech

Mova-se em Direção a um Ponto

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 27 de 67.

Vector3.MoveTowards(current, target, maxStep) retorna um ponto até maxStep mais perto de target. Quando o alvo está mais perto do que isso, retorna o próprio alvo, então nunca ultrapassa. Usando speed * Time.deltaTime como passo, um objeto se move a uma velocidade constante e para exatamente no alvo. Este teleférico desliza até a estação a 2 unidades por segundo:

public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;

void Update()
{
    transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}

Depois que chega, todas as chamadas seguintes retornam station novamente, então o teleférico fica parado, e transform.position == station é verdadeiro. Para um único número, Mathf.MoveTowards funciona da mesma maneira.

Vector3.Lerp(a, b, t) é o ponto a uma fração t do caminho de a até b: com t = 0.5, ele fica na metade do caminho. Escrito como Lerp(transform.position, station, 2f * Time.deltaTime) em Update(), ele percorre uma parte da distância restante em cada quadro: rápido no início, cada vez mais devagar perto do fim, aproximando-se aos poucos em vez de chegar a uma velocidade definida. Use MoveTowards quando um objeto precisar se mover a uma velocidade definida e parar exatamente; use esse padrão com Lerp para uma desaceleração suave.

challenge icon

Desafio

Médio

O drone fica parado no ar até você pressionar Espaço. A partir daí, ele voa em linha reta até pad, a posição da plataforma de pouso, a speed unidades por segundo, e pousa exatamente nela. Quando pousar, ele registra Landed uma vez, e não novamente a cada quadro depois disso.

Pressione Play, pressione Espaço e, em seguida, Check.

Experimente você mesmo

using UnityEngine;

public class Drone : MonoBehaviour
{
    public Vector3 pad = new Vector3(0, 0.25f, 0);
    public float speed = 2f;

    void Update()
    {
        // Após Space: voe até pad na velocidade speed e registre Landed uma vez ao chegar
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity