Menu
CoddyTech

Velocidad diagonal

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 27 de 85.

Mantén pulsadas a la vez las flechas derecha y arriba, y los ejes sin procesar dan la dirección (1, 0, 1). Su longitud, .magnitude, es la raíz cuadrada de 1 + 1, aproximadamente 1.41. Un caminante que se mueve con ella recorre 1.41 unidades en diagonal durante el tiempo que tarda en recorrer 1 unidad en línea recta: un 41 % más rápido.

.normalized da una copia de un vector que apunta en la misma dirección y mide exactamente 1 unidad: (1, 0, 1) se convierte en aproximadamente (0.71, 0, 0.71), y (0, 0, 5) se convierte en (0, 0, 1). Multiplicado por una velocidad, se mueve a esa velocidad, sea cual sea la dirección. Esta abeja vuela hacia la flor a 2 unidades por segundo, tanto si la flor está lejos como 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 como estaba; v.Normalize() cambia v directamente.

challenge icon

Desafío

Fácil

Haz que el caminante se mueva a la misma velocidad en diagonal.

  1. En Update(), crea Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));.
  2. Suma direction.normalized * speed * Time.deltaTime a transform.position.

Pulsa «Jugar» y mantén pulsadas dos flechas: el caminante se mueve en diagonal sin ir más rápido que en línea recta. Después, pulsa «Comprobar».

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 speed, manteniendo la misma velocidad en diagonal.
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity