Mi solución al reto.
El Objetivo es encontrar el ángulo que hay entre el enemigo y el jugador, pero necesitamos aplicar las razones trigonométricas así que lo primero que hacemos es formar un triángulo rectángulo usando las coordenadas del jugador y el enemigo de la sig. Manera:
Nota: esto esta dentro del FixedUpdate.
corner.position = new Vector3( transform.position.x , target.position.y , 0);
Una vez tenemos formado el triángulo calculamos el Cateto Opuesto y el Cateto Adyacente:
float cA = corner.position.y - transform.position.y;
float cO = corner.position.x - target.position.x;
Bien ahora para encontrar el ángulo tenemos que despejarlo de la tangente de la sig forma:
- Tan θ = cO/cA
ArcTan Tanθ = ArcTan(cO/cA)- θ = ArcTan(cO/cA)
Bien ahora que tenemos una fórmula para calcular el ángulo lo implementamos en el código:
float angle = Mathf.Atan2(cO,cA) * Mathf.Rad2Deg;
rb.rotation = angle;
Calculamos Arcotangente usando la función Atan2 esta recibe como para metros la tangente y retorna el ángulo, pero como este está en radianes lo multiplicamos por la constante Rad2Deg para convertirlo a grados.
Bueno esa la forma en la que lo implemente, pero esto tiene un inconveniente y es que la rotación es instantánea, ¿a alguien se le ocurre como implementarle una velocidad angular a la rotación del avión enemigo?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?