Menu
CoddyTech

Velocidad

Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 5 de 63.

rb.linearVelocity indica cómo se está moviendo el cuerpo en este momento: un Vector3 en metros por segundo a lo largo de x, y y z. Leerlo te indica hacia dónde se dirige el cuerpo, y rb.linearVelocity.magnitude es su rapidez. Al establecerlo, el movimiento cambia de inmediato, sin aceleración gradual ni intervención de la masa: una caja de 1 kg y una caja fuerte de 50 kg configuradas a 2 m/s se mueven ambas exactamente a 2 m/s desde el siguiente paso de física. La gravedad, la fricción y los impactos siguen actuando sobre el cuerpo después.

Este kart avanza exactamente a cruise m/s. Copia la velocidad, cambia solo z y la asigna de nuevo, así que conserva la y que le dio la gravedad y el kart sigue cayendo al llegar al final de una rampa:

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // hacia delante a exactamente cruise m/s
    rb.linearVelocity = vel;   // y conserva el valor que le dio la gravedad
}

Establecer también y en 0 descartaría la velocidad que le dio la gravedad en cada paso, y el kart se deslizaría hacia abajo al salir de la rampa en vez de caer. Antes de Unity 6, esta propiedad se llamaba velocity. Los tutoriales antiguos todavía escriben rb.velocity: en Unity 6 compila, con una advertencia de que velocity está obsoleto y se ha renombrado como linearVelocity. drag pasó a llamarse linearDamping de la misma manera. Escribe los nombres nuevos.

challenge icon

Desafío

Fácil

El robot camina sobre una plataforma elevada. Haz que camine con las flechas exactamente a speed m/s (3 en el Inspector): izquierda y derecha a lo largo de x, arriba y abajo a lo largo de z, usando los ejes sin procesar para que no haya suavizado.

  • Si no se mantiene pulsada ninguna flecha, se queda quieto de inmediato.
  • La gravedad sigue funcionando: si sale caminando por el borde, el robot cae al suelo de abajo.

Pulsa Play y haz que camine por el borde; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Camina exactamente a speed con las flechas, conservando la y de la gravedad
    }
}
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 Física y jugabilidad