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.
Desafío
FácilEl 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
}
}
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
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger