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
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
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 :
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 |
| > |
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 :