La física de Unity se actualiza a pasos fijos.

FixedUpdate

void FixedUpdate()
{
    rb.AddForce(Vector3.forward * fuerza);
}

Time.fixedDeltaTime

Representa el intervalo entre pasos físicos.

Debug.Log(Time.fixedDeltaTime);

Input y física

Buena práctica:

Update
→ leer input

FixedUpdate
→ aplicar física

Ejemplo

private Vector2 input;

void Update()
{
    input = moveAction.action.ReadValue<Vector2>();
}

void FixedUpdate()
{
    Vector3 direccion =
        new Vector3(input.x, 0f, input.y);

    rb.AddForce(
        direccion * fuerza,
        ForceMode.Acceleration
    );
}

Por qué no todo en FixedUpdate

Botones muy cortos pueden no coincidir con un paso físico.

Por eso conviene detectar pulsaciones en Update.


Resumen rápido