Mover con Transform cambia directamente la posición del objeto.

Movimiento básico

[SerializeField]
private float velocidad = 5f;

void Update()
{
    transform.position += Vector3.forward * velocidad * Time.deltaTime;
}

Translate

transform.Translate(Vector3.forward * velocidad * Time.deltaTime);

Por defecto, Translate usa el espacio local del objeto.


Movimiento con Input

Vector2 input = moveAction.action.ReadValue<Vector2>();

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

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

Normalizar dirección

Si se mueve en diagonal, la magnitud puede superar 1.

if (direccion.sqrMagnitude > 1f)
{
    direccion.Normalize();
}

Cuándo usarlo

Es útil para: