Mover un personaje en Unity con física realista exige decisiones precisas. Aquí verás cómo aplicar una velocidad horizontal constante, por qué usar FixedUpdate para un movimiento fluido y cómo preparar un controlador que avanza a la derecha mientras preserva el salto. Además, se proponen ejercicios para ampliar el gameplay con teclas y animaciones.
¿Cómo mover al personaje con física en Unity sin perder fluidez?
Para actualizar la velocidad del RigidBody, la recomendación es usar FixedUpdate. A diferencia de Update, que corre por frame, FixedUpdate funciona con un ritmo fijo. Así evitas que las bajadas de FPS provoquen un movimiento entrecortado o "lageado". Cualquier ajuste de física dentro de FixedUpdate se percibe más estable. El resultado: un desplazamiento horizontal que se mantiene suave incluso cuando la escena se vuelve más pesada.
¿Qué diferencia hay entre Update y FixedUpdate?
- Update: se ejecuta por frame. Si caen los FPS, el movimiento se resiente.
- FixedUpdate: se ejecuta con un reloj a intervalos fijos. Movimiento estable.
- Física: configura velocidades y fuerzas en FixedUpdate para consistencia.
¿Qué variables y código necesitas para la velocidad horizontal?
Crea una variable pública de velocidad para editarla en el editor: un valor mayor o menor cambia de forma directa la dificultad. El ejemplo usa 2.0 como valor inicial, colocada junto a jumpForce en el player controller. Luego, en FixedUpdate, fuerza la componente horizontal del RigidBody hasta alcanzar la runningSpeed, preservando la velocidad vertical del salto.
¿Cómo queda el código mínimo en el player controller?
// Dentro del script del Player Controller
public float runningSpeed = 2f; // editable desde el editor
void FixedUpdate()
{
// Si no alcanzamos la velocidad objetivo en X, la imponemos.
if (rigidBody.velocity.x < runningSpeed)
{
rigidBody.velocity = new Vector2(
runningSpeed, // velocidad horizontal constante
rigidBody.velocity.y // preservar velocidad vertical del salto
);
}
}
Puntos clave:
- Variable pública para ajustar la velocidad desde el inspector de Unity.
- Movimiento automático hacia la derecha en el eje X.
- La componente vertical la gobierna el sistema de salto existente.
- Guarda el script antes de probar: si no, no verás cambios.
- Al llegar al final de la plataforma, el personaje cae y sale de pantalla si la cámara no lo sigue.
¿Qué experimentos y ejercicios mejoran el gameplay y la animación?
El controlador base avanza a ritmo fijo y el jugador solo puede saltar con la barra espaciadora. A partir de aquí, se sugiere experimentar con física y añadir controles para transformar el gameplay.
¿Qué pasa si desactivas freeze rotation en Z?
- Al quitar la restricción en Z, el personaje puede volcar y girar como una peonza.
- Con colisionadores circulares, el giro es más evidente y menos estable.
- Duplicar plataformas ayuda a observar el comportamiento al aterrizar y al rodar.
¿Qué ejercicios propuestos amplían tu controlador?
- Usar teclas A y D para mover a izquierda y derecha.
- Implementar el flip de la animación para mirar en ambos sentidos.
- Añadir booleanos: mirando a izquierda/derecha, estados de animación.
- Crear animaciones extra: agacharse o una animación tras un tiempo quieto.
- Ajustar la runningSpeed para modular dificultad y ritmo.
¿Te animas a compartir cómo adaptarías el controlador y qué variantes de movimiento probarías? Comenta tus ideas y resultados.