Problème déplacements 8 directions

Bonjour à tous,
Ohh surprise… je démarre un rpg. J’ai deux problèmes liés au contrôle du personnage. Il se déplace dans 8 directions, vue de haut. Lorsqu’il doit aller en diagonale, on presse sur 2 touches : haut+bas par exemple. Lorsuq’on arrête de presser les touches il se met dans une position d’attente qui dépend de son orientation.

Problème 1 :
Après un déplacement en diagonale (par exemple en haut/droite), j’aimerais qu’un fois les touches relâchées il conserve son orientation pour attendre. Or, si les deux touches ne sont pas relâchées en même temps, il prendra la direction de la touche relâchée en dernier (et ç ase joue à un pouilllllème de seconde).
Y-a-t-il une astuce pour cela ? (délai ordonnancement des conditions…

Problème 2 :
lorsque le personnage se déplace et qu’on appuye sur espace (tir), il doit s’arrêter, tirer puis si le joueur a laisser les touches directionnelles appuyées reprendre sa marche. Cela fonctionne parfaitement pour 7 directions… sauf pour la diagnale haut/gauche.
Je sèche complètement, car à moins d’une paritcularité au niveau du code de déplacement 8 directions qui est proposée mais non visible par GD, je ne vois pas…

SI vous avez des idées… Une copie de mon code et du comportement du joueur…

Merci de votre lecture et aide !

A222


Pour le problème 1, je te conseille de verrouiller l’action avec un chronomètre. :slight_smile:

Salut,
merci de ta réponse… et hmmmm, comment on fait ?

Apparement, le PB2 serait peut-être issu d’un bug… D’autres le confirme ?

Merci A+

Salut à tous pour la troisième fois !
Pour le PB n°2 il semble qu’il s’agisse d’un bug en effet. Car quand je change la touche ‘espace’ par une autre touche ‘a’ par exemple, le comportement du sprite est le même quelque soit la direction. Le problème disparait.

Il semble que c’est l’association espace + haut + gauche qui ne fonctionne pas…

Je retourne au pb 1…

A toute !

As tu un morceau de programme à nous donner ? ce sera plus facile pour débugger (pour ton pb No1)

Voici un bout de mon programme. Je suis en mode comportement 8 directions. Mon problème est donc de faciliter l’arrêt en diagonal avec une espèce de temporisation… Du genre si bas et relâché un dixième de seconde après gauche , alors on se met en orientation 3. …

Salut,

Je viens de faire des essais sur ton soucis : c’est assez galère en fait.
Je te conseille de ne pas t’attarder sur ce détail, ou bien de ne pas utiliser le comportement 8 directions…
dsl
:imp:

Merci Luduo pour avoir tenter le coup !

Je vais suivre ton conseil et ensuite voire si je ne peux pas faire mon propre algo de déplacement… De toute façon j’ai un autre soucis plus embêtant à gérer… A toute de suite dans un nouveau post !

A.

:stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

Impec :smiley:

Salut,

A tout hasard, on ne pourrait pas juste tester si 2 touches sont pressées et attribuer une valeur correspondant au num de l’image représentant le sens du perso à une variable, il n’y a que 4 possibilités, donc 4 images différentes, puis tester quand les touches sont relâchées pour alors faire afficher l’image dont le numéro se trouve dans la variable ?