Flèches droites peuvent changer d'angle #7

Merged
MaximilienBB merged 8 commits from origin/feature/StraightArrowChangesAngle into main 2025-05-30 23:42:35 +00:00
Showing only changes of commit a6a24a87f8 - Show all commits

View File

@ -100,17 +100,27 @@ public class Projectile : MonoBehaviour
float angleX = (_destinationX) / _initialXDistance; float angleX = (_destinationX) / _initialXDistance;
float angleY = (_destinationY) / _initialYDistance; float angleY = (_destinationY) / _initialYDistance;
//Obtenir la difference entre la position Y du chateau et de l'enemie. //Obtenir la difference entre la position Y du chateau et de l'ennemie.
float diffY = transform.position.y - _enemyPosY; float diffY = transform.position.y - _enemyPosY;
//D'abord,on regarde si l'ennemi et l'unite sont a la meme hauteur.
//Si ce n'est pas le cas, on modifie l'angle de la fleche. Sinon, on ne change rien.
if (diffY >= 0.1 || diffY <= -0.1) if (diffY >= 0.1 || diffY <= -0.1)
{ {
float lerpStepS; float lerpStepS;
//Ensuite, on regarde la position entre l'ennemi et l'unite.
//Si cette distance est plus petite qu'un certain nombre, on utilise un calcul differents
MaximilienBB marked this conversation as resolved Outdated

Peut-être ajouter des commentaires détaillant ce que font les IF, pour faciliter la maintenance plus tard. Que ce soit ce que les IF font, ou bien ce que les conditions signifient

Peut-être ajouter des commentaires détaillant ce que font les IF, pour faciliter la maintenance plus tard. Que ce soit ce que les IF font, ou bien ce que les conditions signifient
//pour determine l'angle que la fleche doit prendre.
if (angleX > 0.23) lerpStepS = Mathf.Rad2Deg * Mathf.Atan(angleX / angleY); if (angleX > 0.23) lerpStepS = Mathf.Rad2Deg * Mathf.Atan(angleX / angleY);
//Si la position est negative, on utilise un calcul different pour determiner l'angle.
//(Il faudra tester si ca marche lorsque le chateau pourrait tirer en arriere).
else if (angleX >= 0) lerpStepS = Mathf.Rad2Deg * Mathf.Atan(angleY / angleX); else if (angleX >= 0) lerpStepS = Mathf.Rad2Deg * Mathf.Atan(angleY / angleX);
//Calcul utilise pour tenter de mieux faire fonctionner l'angle de la fleche lorsque l'ennemi est
//proche de l'unite.
else { else {
lerpStepS = -Mathf.Rad2Deg * Mathf.Atan(angleY / angleX); lerpStepS = -Mathf.Rad2Deg * Mathf.Atan(angleY / angleX);