Event qui suit un chemin - Jeu 7 Mai - 0:33

J'ai corrigé le CSS... x)

L'exercice est intéressant et ta solution est très pertinente, merci d'avoir présenté et décrit ce que tu as fait !

J'ai tenté de faire la même chose, mais avec "changer direction", genre, s'il ne peut pas avancer, il essaie de voir à sa propre droite s'il peut, sinon, il se retourne jusqu'à pouvoir :

Event - EV002
| > Boucle
| >| > Appeler Script : SV[1] = event_x(me)
| >| > Appeler Script : SV[2] = event_y(me)
| >| > Appeler Script : SV[1] += 1 if event_direction(me) == 6
| >| > Appeler Script : SV[1] -= 1 if event_direction(me) == 4
| >| > Appeler Script : SV[2] += 1 if event_direction(me) == 2
| >| > Appeler Script : SV[2] -= 1 if event_direction(me) == 8
| >| > Condition : Script : terrain_tag(SV[1], SV[2]) == 1
| >| >| > Déplacer évènement : Cet événement (Ignorer action impossible, Attendre la fin)
| >| >| > Déplacer évènement : > Un pas en Avant
| >| >| > Opération : Interrupteur local A = Désactivé
| >| >| >
| >| > Sinon
| >| >| > Condition : Interrupteur local A == Activé
| >| >| >| > Déplacer évènement : Cet événement (Attendre la fin)
| >| >| >| > Déplacer évènement : > Quart de tour à Droite
| >| >| >| >
| >| >| > Sinon
| >| >| >| > Déplacer évènement : Cet événement (Attendre la fin)
| >| >| >| > Déplacer évènement : > Quart de tour à Gauche
| >| >| >| > Opération : Interrupteur local A = Activé
| >| >| >| >
| >| >| > Fin - Condition
| >| >| >
| >| > Fin - Condition
| >| >
| > Fin - Boucle
| >


Là avec le code ci-dessus, ça fonctionne, sauf qu'on voit l'événement tourner une fois à droite puis deux fois vers la gauche quand il ne peut pas tourner à droite, et c'est ridicule.

En refaisant la même chose, mais avec une direction virtuelle (indexée comme je veux), là ça passe bien, puisqu'il tourne virtuellement (donc, pas visiblement) :

Event - EV002
| > Boucle
| >| > Appeler Script : SV[1] = event_x(me)
| >| > Appeler Script : SV[2] = event_y(me)
| >| > Appeler Script : SV[2] += 1 if SL[:destination] == 0 #bas
| >| > Appeler Script : SV[1] -= 1 if SL[:destination] == 1 #gauche
| >| > Appeler Script : SV[2] -= 1 if SL[:destination] == 2 #haut
| >| > Appeler Script : SV[1] += 1 if SL[:destination] == 3 #droite
| >| > Condition : Script : terrain_tag(SV[1], SV[2]) == 1
| >| >| > Appeler Script : move_to(me, SV[1], SV[2], true)
| >| >| > Opération : Interrupteur local A = Désactivé
| >| >| >
| >| > Sinon
| >| >| > Condition : Interrupteur local A == Activé
| >| >| >| > Appeler Script : SL[:destination] -= 1
| >| >| >| > Appeler Script : SL[:destination] %= 4
| >| >| >| >
| >| >| > Sinon
| >| >| >| > Appeler Script : SL[:destination] += 1
| >| >| >| > Appeler Script : SL[:destination] %= 4
| >| >| >| > Opération : Interrupteur local A = Activé
| >| >| >| >
| >| >| > Fin - Condition
| >| >| >
| >| > Fin - Condition
| >| >
| > Fin - Boucle
| >


Tag gauche sur RMEx 1430951145-tourne2

Je sais que la commande move_to passe par un pathfinding, et donc qu'il serait peut-être préférable de faire quatre conditions pour dire directement "déplacer direction X", mais je me suis dit qu'une chemin d'une case en avant devait se calculer assez rapidement. ^^

Ma proposition gère les demi-tours aussi :

Tag gauche sur RMEx 1430951282-tourne3
Rechercher dans: Vos réalisations  Sujet: Event qui suit un chemin  Réponses: 7  Vues: 821