Estos son algunos errores frecuentes al programar movimiento.

No usar deltaTime

Incorrecto:

transform.position += direccion * velocidad;

Correcto:

transform.position +=
    direccion * velocidad * Time.deltaTime;

Movimiento diagonal más rápido

Si sumás X y Z, la diagonal puede tener magnitud mayor a 1.

Solución:

direccion.Normalize();

o:

direccion = Vector3.ClampMagnitude(
    direccion,
    1f
);

Mezclar Transform y Rigidbody

Si un objeto usa Rigidbody físico, evitar moverlo constantemente con:

transform.position = ...

porque puede pelearse con el motor de física.


Física en Update