Cómo rotar un GameObject para que mire hacia otro GameObject en Unity.
El enemigo se moverá y mirara hacia el jugador.
Objetivo: Rotar el GameObject del enemigo mientras se mueve hacia el jugador.
En este caso el código lo agregaría antes de mover al jugador. Primero se crearon 2 variables de tipo Vector3 para guardar la posición del enemigo (objtPosition) y la del jugador (target). Después en el código calculamos el vector diferencia (restando las coordenadas x & y de cara vector) para el vector de dirección entre el enemigo y el jugador.
Para calcular el ángulo con el que tenemos que rotar al enemigo para ver hacia a el jugador se usó la function Mathf.Atan2() pasando como parámetros las coordenadas del vector calculado. A este resultado se le multiplicó por la constante Mathf.Rad2Deg para obtener el ángulo en grados.
El siguiente paso es rotar al enemigo, para esto se usó la function Quaternion.Euler y se la paso como parametros 0 para “x” y “y”. Y para rotarlo en el eje z se le pasó como parámetro el ángulo calculado menos un déficit de 180 ya que el enemigo siempre está viendo de arriba hacia abajo esta resta nos permite ajustar la rotación para que vea hacia a el jugador.
Después para que el láser del enemigo sea disparado en la misma dirección, después de ser instanciado simplemente tenemos que asignarle la misma rotación que tienen el objeto padre.
Y eso sería todo!!! Ahora el enemigo mira hacia el jugador mientras lo persigue.