Velocidad diagonal
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 20 de 67.
Mantén pulsadas a la vez las flechas derecha y arriba, y los ejes sin normalizar dan la dirección (1, 0, 1). Su longitud, .magnitude, es la raíz cuadrada de 1 + 1, aproximadamente 1.41. Un personaje que se mueve con este vector recorre 1.41 unidades en diagonal en el tiempo que tarda en recorrer 1 unidad en línea recta: un 41 % más rápido.
.normalized devuelve una copia de un vector que apunta en la misma dirección y tiene exactamente 1 unidad de longitud: (1, 0, 1) se convierte aproximadamente en (0.71, 0, 0.71), y (0, 0, 5) se convierte en (0, 0, 1). Al multiplicarlo por una velocidad, se mueve a esa velocidad, cualquiera que sea la dirección. Esta abeja vuela hacia la flor a 2 unidades por segundo, tanto si la flor está lejos como si está cerca; sin .normalized, volaría más rápido cuanto más lejos estuviera la flor:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized sigue siendo (0, 0, 0), ya que el cero no tiene dirección. v.normalized deja v tal como estaba; v.Normalize() modifica el propio v.
Desafío
FácilEscribe el movimiento del caminante. Las flechas (o WASD), leídas con los ejes sin procesar, lo mueven a izquierda y derecha a lo largo de x, y hacia arriba y hacia abajo a lo largo de z. Se mueve a speed unidades por segundo en todas las direcciones, incluidas las diagonales, empieza y se detiene al instante, y permanece quieto si no se mantiene ninguna tecla pulsada.
Pulsa Play, camina en línea recta y en diagonal, y después pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Flechas o WASD: muévete a lo largo de x y z a la velocidad indicada, también en diagonal.
}
}
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