Problème de saut

Bonjour.
Je fais un petit jeu mario, mais il y a un problème que je n’arrive pas a enlever.

Quand je saut contre le mur:

et quand je reste appuyer sur la touche haut (touche saut) en même temp, mario fait comme un double saut.
Je sait d’ou cela vien, mais je n’arrive pas a regler ce problème.
Je pense que cela vien du fait que mario a toujour une force vers le haut, et comme il touche le sol cela ajoute une force en plus ce qui double la force vers le haut.
Mais comment regler le problème ?

Rajoute un chronomètre.
Tant que le chronomètre n’a pas dépassé la durée du saut, la touche saut est inactive.

J’ai deja penser a cela, mais il y a un truc qui bloque.
Si pendant le saut mario tape contre un bloc bonus, le saut sera moin long et quand il touchera a nouveau le sol il pourra pas sauter pendant un certain temp !

Ah ouais …

Dans ce cas, il faut gérer les collisions avec deux objets :

  • un pour le bas (les pieds) qui servira à déterminer quand le perso a quitté le sol et quand il le retouche
  • un pour le corps/tête, qui servira aux autres collisions

Ce serait un truc du genre “si pieds en collision avec sol (le perso est en contact avec un solide) et force sur Y égale à zéro (le saut n’est pas en cours) alors touche saut activable”.

Il se trouve que j’ai déjà essayer de tester si la force en Y était égal a 0 et cela n’est pas très précis, en gros quand on touche le sol, il faut attendre un peu avant de pouvoir sauter a nouveau.

Et si tu testes “<=0.1” plutot que “==0”, par exemple ?
Ca laisse de la marge pour enclencher le saut suivant.

Le saut suivant marche bien, mais le problème est la, l’effet double saut persiste.

Normalement, ce n’est pas possible, puisque l’objet-collision Pieds ne touche pas le sol. La touche de saut doit donc être désactivée, tant que les pieds ne collisionnent pas quelque chose ET que la force en Y est remarquable.

Sinon, je te propose une autre solution.

[spoiler]Laisse tomber !
Design ton jeu avec des doubles sauts infinis, et basta. Au moins, t’auras un jeu original avec ses mécaniques propres. :bulb:

De toute façon, cette histoire de saut doit être hyper-simple à gérer. Ca date de la NES, et aucun des designeurs n’avaient la puissance machine ou la versatilité de programmation qui est la notre aujourd’hui.
Il y a surement une astuce de programmation, ou la nécessité d’un objet spécifique qui n’est pas disponible avec GD.

Demande à BigMniGames : http://www.forum.compilgames.net/viewtopic.php?f=7&t=2185
Je n’ai pas souvenir de ce problème avec son jeu.[/spoiler]

Le truc c’est de faire des objets toujours collés à mario pour informé s’il touche le mur depuis un côté ou avec ses pied…
Edit : en fait j’ai pas vraiment compris ton problème… Je verrai ça plus tard car j’ai beaucoup de boulot.

Je pourrait avoir un petit exemple du système des objet coller au héros ?

[code]

toujours :
-faire = position de X mario + 10 à la position X de détecteur droit
-faire = position de Y mario à la position Y de détecteur droit
-faire = position de X mario - 10 à la position X de détecteur gauche
-faire = position de Y mario à la position Y de détecteur gauche
-faire = position de X mario à la position X de détecteur bas
-faire = position de Y mario +20 à la position Y de détecteur bas[/code]

Pour les objet coller, j’ai compris.
Mais je ne voit pas comment faire avec la collision du sol et des mur… ça ne change rien !?

Et bien, maintenant, il te suffit de faire sauter le perso uniquement si le capteur en BAS touche le sol. :wink:

ça change rien a mon problème.
Si on saute pour monter sur une plateforme, si on arrive sur le bord, le capteur touche forcement le sol de la plateforme.
Et comme on est deja en saut et que l’on rajoute un saut (si on reste appuyer sur le touche saut) cela ajoute plus de force au saut que prévu.
Ce qui retourne au fait que cela fait un double saut !

Si tu étais malin tu aurais étudié l’exemple plateforme de GD, qui ne présente aucun bug comme celui-ci, le tout sans utiliser la pseudo-solution des capteurs qui relève plus du bricolage que d’autre chose.

Ouais, mais je préféré utiliser l’automatisation physique qui est plus réaliste !

Bonjour,
Tu as deux exemple dans GD qui te montrent comment utiliser l’automatisme moteur physique. Et puis rien ne coûte de chercher toi-même comment modifier les valeurs de la gravité pour arriver à faire un saut.
@+
sototo

c’est n’est pas un problème de valeur de la gravité, c’est un problème de collision dans le saut… je cherche, je cherche mais je ne trouve pas de solution !

Est-ce que par hasard tu cherches compliqué là où tu peux faire simple ? Il suffit juste de vérifier une collision, donc utilise les conditions de collision, ou essaie de vérifier les positions.