[GM] Sauter (jeu de plateforme)

Démarré par HCkev, 13 Mai 2007 à 20:45

0 Membres et 1 Invité sur ce sujet

Tout d'abord, je tiens à dire que J'ai fait une recherche sur le forum, sans rien trouver de pertinent. Et sur google, je n'arrive qu'a des moteurs de plateforme déjà tout fait, ce que je ne veux pas...


Alors, donc. J'ai décidé de faire une petit jeu de plateforme sans prétention sur GM dans le but de me pratiquer avec ce logiciel qui me semble bien intéressant(je posterai bientôt dans le bac à sable ^_^). Les mouvements fonctionnenent bien, on peut glisser sur les pentes et tout, mais je bloque pour le saut... Ce que je suis arrivé à faire est vraiment pas très pratique, on a presque pas de contrôle du saut et il est difficile (voir presque impossible) d'atteindre une plateforme une tile plus loin ! J'aimerais faire un saut dans le genre de Mario. Pas obligatoire que le personnage saute plus haut si on laisse enfoncé(mais c'est mieux ^_^), je veux au minimum faire en sorte qu'on puisse bien contrôler le saut dans les airs.. Et n'ayant jamais fait de jeux de plateforme, je ne sais pas trop comment m'y prendre.


Alors, si quelqu'un qui connait bien GM pourrait me montrer comment faire, ou même si ce n'est pas GM, simplement de me dire ce qu'il faut faire et tout, ce serait bien gentil ^_^ Ou un lien internet serait aussi apprécié :) Je ne demande pas nécéssairement de code ;)

merci d'avance  B):super:

Il y avait un toturial qui est, quand même, plutot bien fait pour le jeu de plates-formes avec Game Maker sur le site officiel. Cependant vu qu'il y a une nouvelle version, je sais plus si il est disponible. :unsure: A voir.


Sinon.
Je me base sur des souvenirs, donc je vais peut être pas être très précis désolé. Mais la gestion du saut, dépend du système de plates-formes lui même, donc ça dépend un peu de la façon dont tu as réalisé ton moteur. La méthode qui me semble la mieux, c'est la gestion de la gravité et de la variable vspeed pour les sauts.
En gros, mais je pense que tu l'as déjà fait, c'est de fixer une gravité.
gravity_direction = 270 et gravity = "une valeur assez petite (au choix)"

Ensuite fixer une valeur maximale pour la chute, afin d'éviter qu'une chute soit trop rapide et puisse provoquer des bugs comme traverser un sol.
Donc par exemple :
if vspeed > 10
{
vspeed = 10
}



Sachant que self.vspeed représente la vitesse verticale de l'instance, une valeur positive entraine un déplacement vers le bas et une valeur négative un déplacement vers le haut.
C'est donc parfait sur le saut, il suffit de faire en sorte que lorsque il y a une collision avec un objet "sol" et que celui ci se trouve en bas du personnage (à déterminer avec une condition) la variable vspeed prend une valeur négative (par exemple -7). Avec la gravité le personnage retombera tout seul. Il suffit d'ajouter que lorsqu'il y a une collision avec un objet solide, vspeed = 0 et gravity = 0, si ce n'est pas le cas (donc utiliser else), gravity = ta_valeur_de_gravité".

C'est la méthode que je trouve meilleure, mais ça c'est global. Ca ne te permet que de faire un saut normal, mais après il est assez facile de peaufiner tout cela pour faire en sorte que plus on appuie longtemps, plus on saute haut : ou encore de faire des sauts plus hauts avec l'élan etc....


Enfin j'espère que c'est bien ça que tu demandais. :P

Je veux bien aussi t'aider à faire ton petit moteur de sauts (sachant que tu utilises le logiciel qui m'est le plus utilisé, connu sous le nom de Game Maker), mais avec mes mots, ma façon de voir les choses. ;)


Pour ce faire, tu dois tout d'abord définir la gravité dans le step de ton personnage avec un code qui dit quelle est la direction (gravity_direction = "), puis la gravité si l'objet de collision est en contact avec ce personnage (gravity = ") ou non (gravity = 0).

Après, il faut que si le personnage est en contact de nouveau avec le sol, il s'arrête carrément puis reprend la capacité de marcher afin qu'il ne franchisse pas l'objet en question.

Pour le reste, c'est du vspeed, comme Octorok l'a expliqué.


En espérant que ça t'aide et que ça fasse un petit plus à ce qu'a dit Octorok. Bonne chance ! ;)

Tiens, je ne savais pas qu'on pouvait mettre de la gravité aussi facilement :) Moi J'avais fait en sorte que si, un pixel plus bas, le eprsonnage ne touche pas à un objet solide, je le fait descendre de 4 pixel (ou moins s'il est près du sol). Mais votre méthode semble plus simple et mieux, je vais me pencher là dessus ;)

merci ^_^