Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Escribe 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.
    }
}
quiz iconPonte a prueba

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