Bonjour 😀
Après avoir posté une première petite fonction il y a quelques temps (traducteur), je suis de retour avec un système de boussole.
Cette fonction vous donnera l'angle entre une position (tracker), et la direction vers laquelle vous regardez (horizontalement). Cette angle vous est donné en degré dans le sens trigonométrique.
Donc si on fixe la position tracker (0°), et qu'on tourne la tête vers la gauche de 10°, on obtient 10, mais si on tourne la tête vers la droite de 10°, on obtient 350°
function getAngle(player: player, tracker: location):: number:
set {_Tx} to z-coord of {_tracker} - z-coord of {_player}
set {_Ty} to x-coord of {_tracker} - x-coord of {_player}
set {_Ax} to 1
if {_Ty} > 0:
set {_Ax} to -1
add 180 to {_angle}
set {_Bx} to {_Tx} / (sqrt({_Tx}^2 + {_Ty}^2))
set {_By} to {_Ty} / (sqrt({_Tx}^2 + {_Ty}^2))
set {_theta} to acos({_Ax}*{_Bx} / sqrt({_Bx}^2 + {_By}^2))
add {_theta} - {_player}'s location's yaw to {_angle}
if {_angle} < 0:
set {_angle} to 360 + {_angle}
return {_angle}
Personnellement, j'utilise ma fonction avec un texture pack, pour animer une "boussole".
Pour ce faire j'utilise l'expression suivante pour récupérer un entier en fonction de mon angle:
round({_angle}/ 360/35)
Dans mon cas, j'utilise 35 texture de boussole avec des angles différents (les angles de mes textures de boussole varie donc de 360/35°), (d'ou le 360/35)
Si des choses sont pas très clair, hésitez pas à poser des questions 🙂
Et si ça vous intéresse, je pourrais poster un skript dans les ressources avec une boussole fonctionnelle (avec texture pack)