Solarus Forum

Solarus => Development => Topic started by: Jerelink on August 25, 2017, 09:28:51 pm

Title: Diagonales avec le mouvement de type "straight"
Post by: Jerelink on August 25, 2017, 09:28:51 pm
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 :)
Title: Re: Diagonales avec le mouvement de type "straight"
Post by: Christopho on August 25, 2017, 09:47:40 pm
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.
Title: Re: Diagonales avec le mouvement de type "straight"
Post by: Jerelink on August 26, 2017, 11:16:30 am
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
  1.     if direction.angle == 0 then
  2.       movement:set_angle(7 * math.pi / 4)  -- bas/droite
  3.     elseif direction.angle == 1 then
  4.       movement:set_angle(math.pi / 4)      --haut/droite
  5.     elseif direction.angle == 2 then
  6.       movement:set_angle(3 * math.pi / 4)  --haut/gauche
  7.     else
  8.       movement:set_angle(math.pi * 5 / 4)  --bas/gauche
  9.     end
Title: Re: Diagonales avec le mouvement de type "straight"
Post by: PhoenixII54 on September 05, 2017, 08:54:17 pm
En fait, tu peux simplifier ton script en faisant
Code: Lua
  1. 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" ;)
Title: Re: Diagonales avec le mouvement de type "straight"
Post by: Jerelink on September 06, 2017, 02:09:04 pm
Cela ne fonctionne pas tout à fait ^^, puis
Code: Lua
  1. 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 !
Title: Re: Diagonales avec le mouvement de type "straight"
Post by: PhoenixII54 on September 06, 2017, 05:24:26 pm
Mea culpa, j'avais pas vu que j'avais laissé le "=" dans mon code. En tout cas, ravi d'avoir pu être utile