En Unity, transform.forward
es una propiedad del componente Transform que devuelve un vector normalizado (de magnitud 1) en el espacio mundial (world space) que representa la dirección hacia donde apunta el frente del objeto (su eje Z positivo). Es extremadamente útil para interactuar con la orientación del objeto en el mundo 3D. Aquí te explico sus usos principales:
Si quieres que un objeto se mueva hacia adelante (como un personaje, un vehículo o un proyectil), puedes usar transform.forward
para definir su dirección de movimiento. Por ejemplo:
public float velocidad = 5f;
void Update()
{
// Mueve el objeto hacia adelante en su dirección actual
transform.position += transform.forward * velocidad * Time.deltaTime;
}
Si necesitas que un objeto mire hacia otro (como una cámara siguiendo a un jugador o un enemigo apuntando al protagonista), transform.forward
ayuda a alinear su orientación. Por ejemplo:
void MirarHaciaObjetivo(Transform objetivo)
{
// Calcula la dirección hacia el objetivo
Vector3 direccion = objetivo.position - transform.position;
// Rota el objeto para que su "forward" apunte hacia el objetivo
transform.rotation = Quaternion.LookRotation(direccion);
}
Es común usar transform.forward
para lanzar rayos desde la posición del objeto en su dirección frontal (por ejemplo, para detectar colisiones, disparar armas o medir distancias):
void Disparar()
{
Ray rayo = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(rayo, out hit, 100f))
{
Debug.Log("Impactó en: " + hit.collider.name);
}
}
Al aplicar fuerzas con el componente Rigidbody, transform.forward
permite mover el objeto físicamente en su dirección frontal:
public Rigidbody rb;
public float fuerza = 10f;
void Start()
{
rb.AddForce(transform.forward * fuerza, ForceMode.Impulse);
}
Si necesitas calcular ángulos, orientar partículas, o generar movimientos basados en la rotación del objeto, transform.forward
proporciona la dirección base. Por ejemplo, en un sistema de partículas que emite hacia adelante:
public ParticleSystem particulas;
void ActivarParticulas()
{
particulas.transform.rotation = Quaternion.LookRotation(transform.forward);
particulas.Play();
}
transform.forward
vs Vector3.forward
:
Vector3.forward
es siempre (0, 0, 1)
(eje Z global).
transform.forward
depende de la rotación del objeto en el espacio mundial.
transform.TransformDirection(Vector3.forward)
si necesitas la dirección en espacio local.
public float velocidadMovimiento = 5f;
public float velocidadRotacion = 100f;
void Update()
{
// Rotar con las teclas A y D
float rotacion = Input.GetAxis("Horizontal") * velocidadRotacion * Time.deltaTime;
transform.Rotate(0, rotacion, 0);
// Moverse hacia adelante con la tecla W
if (Input.GetKey(KeyCode.W))
{
transform.position += transform.forward * velocidadMovimiento * Time.deltaTime;
}
}
En resumen, transform.forward
es esencial para cualquier acción que dependa de la orientación del objeto en Unity, como movimiento, rotación, disparos, física o detección.
Jorge García
Fullstack developer