Menu
CoddyTech

Velocidad

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

rb.linearVelocity indica cómo se mueve el cuerpo en este momento: un Vector3 en metros por segundo a lo largo de x, y y z. Leerlo te dice hacia dónde se dirige el cuerpo, y rb.linearVelocity.magnitude es su velocidad. 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 a partir del 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 vuelve a asignar, así que se conserva el valor de 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 adelante 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 da la gravedad en cada paso, y el kart se deslizaría hacia abajo al salir de la rampa en lugar de caer. Antes de Unity 6, esta propiedad se llamaba velocity. Los tutoriales antiguos siguen escribiendo rb.velocity: en Unity 6, compila, pero muestra una advertencia de que velocity está obsoleto y se ha renombrado como linearVelocity. Del mismo modo, drag pasó a llamarse linearDamping. Escribe los nombres nuevos.

challenge icon

Desafío

Fácil

Haz caminar al robot exactamente a speed m/s y deja que se caiga por el borde.

  1. En FixedUpdate(), lee float h = Input.GetAxisRaw("Horizontal"); y obtén float v de "Vertical".
  2. Asigna rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);, conservando la gravedad en y.

Presiona «Jugar» y camina fuera del borde: el robot se detiene cuando sueltas el control y se cae. Después, presiona «Comprobar».

Pruébalo tú mismo

using UnityEngine;

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

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

    void FixedUpdate()
    {
        // Muévete exactamente a speed con las flechas, conservando la y de la gravedad
    }
}

Todas las lecciones de Física y jugabilidad

Practica por tu cuenta: Playground de Unity