Soit tu peux le faire en copiant/collant des évènements partout où tu autorises le saut, comme tu le fais.
Je déconseille cette stratégie, car si tu décides de changer l'évènement de saut, tu auras des centaines d'évènements à modifier sur des dizaines de maps.
En tout cas, pour éviter que le héros saute en permanence, tu peux rajouter à ton évènement une condition pour vérifier que la touche directionnelle est encore pressée. Si le joueur ne presse plus la touche directionnelle, le héros ne sautera pas.
Plutôt qu'un système lourd avec plusieurs évènements, je te recommande plutôt un système avec un unique évènement commun, déclenché en parallèle :
1
2
3
4
5
6
7
8
9
10
11
12
| mémoriser la coordonnée X du héros dans la variable 100
mémoriser la coordonnée Y du héros dans la variable 101
condition : si le héros regarde vers le haut
condition : si la touche haut est pressée
attendre 1 frame
mémoriser la nouvelle coordonnée X du héros dans la variable 102
mémoriser la nouvelle coordonnée Y du héros dans la variable 103
condition : variable 101 égale à variable 103
faire un saut du héros, de deux cases vers le haut, ignorer si impossible
fin de si
fin de si
fin de si |
Et idem pour les 3 autres directions.
Ici les variables 100 et 102 ne servent à rien car mon exemple ne montre qu'un déplacement vertical.
En gros, si le héros essaye d'avancer dans une direction, mais qu'au bout d'une frame il est toujours au même endroit, on en conclut que le héros est bloqué par un obstacle, et donc on tente un saut facultatif.
Comme cet unique évènement commun est déclenché en parallèle, tu n'auras pas à copier/coller des évènements de saut partout sur la map, et tu n'auras à modifier qu'un seul code si tu as envie d'une modification dans le futur.
|