Moverse hacia un punto
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 27 de 67.
Vector3.MoveTowards(current, target, maxStep) devuelve un punto hasta maxStep más cerca de target. Cuando el objetivo está más cerca que eso, devuelve el propio objetivo, así que nunca se pasa. Con speed * Time.deltaTime como paso, un objeto se desplaza a velocidad constante y se detiene justo en el objetivo. Este teleférico se desliza hasta su estación 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);
}Una vez que llega, todas las llamadas posteriores devuelven station de nuevo, así que el teleférico se queda quieto, y transform.position == station es true. Para un solo número, Mathf.MoveTowards funciona de la misma manera.
Vector3.Lerp(a, b, t) es el punto situado a una fracción t del trayecto desde a hasta b: con t = 0.5 está a mitad de camino. Escrito como Lerp(transform.position, station, 2f * Time.deltaTime) en Update(), recorre una parte de la distancia restante en cada fotograma: rápido al principio, cada vez más lento al acercarse al final, avanzando poco a poco en vez de llegar a una velocidad fija. Usa MoveTowards cuando un objeto deba desplazarse a una velocidad fija y detenerse justo en el objetivo; usa ese patrón de Lerp para una desaceleración suave.
Desafío
IntermedioEl dron espera en el aire hasta que pulses Space. A partir de entonces, vuela en línea recta hacia pad, la posición de la plataforma de aterrizaje, a speed unidades por segundo, y aterriza exactamente sobre ella. Cuando aterriza, registra Landed una sola vez, no de nuevo en cada fotograma posterior.
Pulsa Play, pulsa Space y después Check.
Pruébalo tú mismo
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// Después de pulsar Space: vuela hacia pad a velocidad speed y registra Landed una sola vez al llegar
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos de scripting en Unity
1Tu primer script
Hola, UnityColoca el cuboMuévete en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo4Vectores
Sumar vectoresDireccionesEspacio local y globalVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron7Proyecto: Atrapa la estrella
El atrapadorUna estrella fugaz10El ciclo de vida de los scripts
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vida2El Inspector
Campos del InspectorSerializeFieldNúmeros decimales y MathfAtributos del InspectorRepaso: Ascensor5Transformaciones y jerarquía
Padres e hijosEscalaMirar objetosMoverse hacia un puntoRepaso: Luna en órbita8Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias superan a FindEl valor nulo de UnityRepaso: la moneda más cercana11Proyecto: Esquiva los bloques
El corredorBloques que caen6GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz