Le système présenté ici a été inventé en réponse au problème posé sur
ce topic.
A savoir que si on est téléporté sans changer de map, les events ayant un itinéraire programmé voient cet itinéraire rafraichit (il le reprennent au début) sans que leur position ne change. Ce qui signifie qu'ils vont faire de mauvais déplacement au mauvais endroit et ça ne va pas être très plaisant à constater.
Le système que je vous propose est un système qui base les déplacement de l'event selon sa position et la direction dans laquelle il regarde. Ces deux paramètres n'étant pas changés lors du téléport du héros, l'itinéraire reste inchangé.
Faisons un peu de théorie :
Le système que voici est un exemple assez simple. Si on regarde ce que doit faire l'event selon sa position on constate deux comportement différents :
- S'il est sur un côté du rectangle (tapis rouge) il doit faire un pas en avant.
- S'il est dans un angle (tapis rose) il doit tourner de 90° à gauche puis faire un pas en avant
Même chose avec ce second exemple :
- S'il est sur un côté du rectangle (tapis rouge) il doit faire un pas en avant.
- S'il est dans un angle (tapis rose) il doit tourner de 90° à gauche puis faire un pas en avant
- S'il est dans un angle interne (tapis rose) il doit tourner de 90° à droite puis faire un pas en avant
On pourrait multiplier les exemples, mais de ces deux-ci on peut alors extraire un constat :
Quelque soit la case où l'event se trouve, il lui faudra toujours finir par faire un pas en avant.
De fait, les seules informations à fournir sont les emplacement où il devra faire plus qu'un pas en avant, ce pas pouvant être programmé de manière systématique à la fin de notre event.
C'est à dire qu'il suffit, pour chacun des cases où il va faire quelque chose avant d'avancer (comme tourner, mais on pourrait aussi imaginer qu'il s'arrête en milieu de parcours), d'en prendre le x et le y et de faire un système comme celui-ci :
- Code:
-
si x de l'event == x de la case
si y de l'event == y de la case
faire ce qu'il faut faire quand on est sur cette case
fin de condition
fin de condition
Par exemple, voici le code de mon premier exemple de parcours :
Pour reprendre mon propos au dessus et expliquer le code :
- On stocke les coordonnées de l'event dans deux variable.
- Puis chaque paire de condition vérifie si l'event est sur une case où il doit tourner et le fait tourner le cas échéant.
- Ensuite l'event fait un pas en avant pour aller sur la case suivante.
Et on revient à la première étape et ainsi de suite...
Pour conclure ce tutoriel qui est déjà bien assez dense, voici un dernier exemple un peu plus complexe pour montrer les possibilités de ce système :
Ici deux comportement à programmer :
- S'il est sur l'intersection (case de plancher), il tourne de 90° à gauche.
- S'il est sur une extrémité (tapis rose), il attend pendant 100 frames et fait demi-tour.
Je ne donne pas le code donc n'hésitez pas à essayer de le coder vous-même pour voir si vous avez bien tout saisi
Voilà c'est fini, merci d'avoir lu jusqu'au bout