1. Prepara el coche
- Crea una malla de coche con el pivote en el centro y añade un BoxCollider.
- Añade un Rigidbody: masa de unos 1000, drag bajo, angular drag moderado.
- Añade el script de abajo y un collider de suelo plano para probar.
2. El controlador
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class ArcadeCar : MonoBehaviour
{
public float acceleration = 25f;
public float maxSpeed = 30f;
public float turnSpeed = 90f;
public float grip = 6f;
Rigidbody rb;
float throttle, steer;
void Awake()
{
rb = GetComponent<Rigidbody>();
rb.centerOfMass = new Vector3(0f, -0.5f, 0f); // low centre = harder to flip
}
void Update()
{
throttle = Input.GetAxis("Vertical");
steer = Input.GetAxis("Horizontal");
}
void FixedUpdate()
{
Vector3 forward = transform.forward;
float speed = Vector3.Dot(rb.linearVelocity, forward);
if (Mathf.Abs(speed) < maxSpeed)
rb.AddForce(forward * throttle * acceleration, ForceMode.Acceleration);
// Steering scales with speed so the car cannot spin on the spot.
float dir = speed < -0.1f ? -1f : 1f;
float turn = steer * turnSpeed * Mathf.Clamp01(Mathf.Abs(speed) / 5f) * dir;
rb.MoveRotation(rb.rotation * Quaternion.Euler(0f, turn * Time.fixedDeltaTime, 0f));
// Cancel sideways velocity: this is the grip.
Vector3 lateral = Vector3.Dot(rb.linearVelocity, transform.right) * transform.right;
rb.AddForce(-lateral * grip, ForceMode.Acceleration);
}
}Usa linearVelocity de Unity 6. En versiones anteriores usa velocity. Usa los ejes del Input Manager clásico; con el nuevo Input System, lee los mismos valores de tus acciones.
3. Ajusta la sensación
| Para conseguir | Cambia |
|---|---|
| Coche suelto, que derrapa | Baja el agarre (2 a 3) |
| Coche pegado al suelo, deportivo | Sube el agarre (8 a 12) y baja el centro de masa |
| Sensación más pesada | Sube la masa y baja la aceleración |
| Giros más cerrados | Sube turnSpeed |
Añade una cámara que siga por detrás con algo de retardo y audio de motor que suba con la velocidad para vender la sensación.
4. ¿WheelColliders o no?
Los WheelColliders simulan suspensión y fricción de neumáticos, lo que sirve para simuladores de carreras pero exige ajuste. Para juegos de crimen de mundo abierto y carreras arcade, el enfoque por fuerzas de arriba es más fácil de hacer divertido.
5. Añade tráfico
Una calle sin coches parece muerta. Traffic System te da coches con IA que siguen carriles y paran en cruces, para que te centres en tu coche. Lee cómo hacer peatones NPC e IA de tráfico para ver cómo funciona.
Preguntas frecuentes
Añade un Rigidbody y un collider, aplica fuerzas para acelerar, rota para girar y cancela la velocidad lateral para dar agarre. El script de arriba lo hace.
Úsalos para suspensión realista. Para juegos arcade, un Rigidbody por fuerzas es más simple y fácil de ajustar.
Baja el centro de masa, ensancha el collider o reduce la dirección a alta velocidad.
Las ideas son las mismas. Godot tiene VehicleBody3D y Unreal tiene Chaos Vehicles, y puedes aplicar el mismo enfoque por fuerzas.
Quién lo escribió
Imersa Studios crea los sistemas Unity, los packs low poly y las guías que se venden en itch.io. El código y las técnicas de aquí salen de publicar esos productos. Más sobre el estudio.

