Diagonales avec le mouvement de type "straight"

Started by Jerelink, August 25, 2017, 09:28:51 PM

Previous topic - Next topic
Salut la communauté !

Je suis embêté par un petit problème concernant le mouvement de type "straight".
J'aimerais pouvoir déplacer une entité dans les quatre directions diagonales, seulement je ne comprends pas bien le concept de math.pi au delà des directions de base.

Autrement, est-il possible de faire cela différemment ? C'est dans le contexte d'un script de déplacement customisé pour certain type de pnj.

Merci et bonne soirée :)

math.pi = 180 degrés
2 * math.pi = 360 degrés

math.pi / 2 = 90 degrés
math.pi / 4 = 45 degrés

etc.
Tu peux te faire une fonction de conversion degrés/radians pour pouvoir rester en degrés si tu es plus à l'aise.

J'ai plus ou moins trouvé les valeurs adéquates dans ce que cherche à faire avec math.pi/4 comme base.
Tout fonctionne correctement merci ! :) Cependant je me demande si ce n'est pas grossier d'avoir écrit cela comme suit :

Code (lua) Select
    if direction.angle == 0 then
      movement:set_angle(7 * math.pi / 4)  -- bas/droite
    elseif direction.angle == 1 then
      movement:set_angle(math.pi / 4)      --haut/droite
    elseif direction.angle == 2 then
      movement:set_angle(3 * math.pi / 4)  --haut/gauche
    else
      movement:set_angle(math.pi * 5 / 4)  --bas/gauche
    end


En fait, tu peux simplifier ton script en faisant
Code ( lua) Select
movement:set_angle=(math.pi*(2*direction.angle-1)%8)/4
'Faut faire un peu de gymnastique du cerveau mais sauf erreur de ma part tu as une formule "universelle" ;)

Cela ne fonctionne pas tout à fait ^^, puis
Code (lua) Select
movement:set_angle(math.pi*(2*direction.angle-1)%8/4) me semble plus exact afin de fonctionner, autrement le script me renvoie un message d'erreur. Après, ce n'est pas bien grave, tant que ça fonctionne comme ça.
C'est assez rustique comme méthode mais ça fonctionne  ;D.

Merci quand même de ton aide PhoenixII54 !

Mea culpa, j'avais pas vu que j'avais laissé le "=" dans mon code. En tout cas, ravi d'avoir pu être utile