Problème de collision des PlatformerObject avec les plateformes

Bonjour, je développe actuellement un jeu de plateforme, et depuis la dernière mise à jour de Gdevelop (version 5.0.139), les masques de collision de mes objets utilisant le comportement “Objet se déplaçant sur les plateformes” ne fonctionnent plus avec mes objets utilisant le comportement “Plateforme”. Cela signifie que lorsqu’un personnage touche une plateforme (de côté ou de dessus), la collision s’effectue comme si le masque de collision de mon personnage était un rectangle de la taille du personnage (ce qui n’est pas le cas), ce qui fait que le personnage est parfois bloqué par les plateformes sans les toucher ou qu’il repose sur une plateforme en étant pourtant au-dessus du vide à côté de la plateforme, comme sur l’image ci-dessous (Oui je sais mon perso est un peu basique :sob:) :
perso qui vole
J’ai bien vérifié, et mes autres masques de collision, y compris ceux de mes plateformes, fonctionnent normalement : le problème n’apparaît que lors de la collision d’un personnage avec une plateforme et que pour le personnage. Or, quand je veux modifier les masques de collision de mes personnages, ils sont bien tels que je les avais créés, suivant à peu près le contour du personnage justement pour éviter ce genre de problème. De plus, j’ai testé de vérifier la collision entre mon personnage et ma plateforme lorsque mon personnage repose sur une plateforme sans la toucher, et le moteur considère que le personnage n’est pas en collision avec la plateforme, ce qui est fidèle à mes masques de collision, mais qui ne correspond pas au fait que le personnage repose sur la plateforme. Voilà je voulais savoir si quelqu’un connaissait la solution à ce problème ou pouvait m’aider, merci d’avance et n’hésitez pas à me demander des précisions si ce n’était pas clair.

Comportement du personnage si besoin (en 2 fois car je suis nouveau :sob:) :

Salut,
Dans un premier temps, ajoute l’action qui permet d’afficher les masques de collision en temps réel, ça aide à résoudre les problèmes.
Ensuite, vérifie :

  • que toutes les trames de tes animations font la même taille en pixels.
  • que tes masques de collision sont corrects (pas de symbole avertissement).

Merci pour ta réponse, Gruk !
J’ai vérifié toutes mes animations, elles font bien la même taille, et mes masques de collision sont également tous corrects. En utilisant l’action qui permet d’afficher les masques de collision en temps réel, j’obtiens cette image :
perso qui vole avec masques de collision
où on voit (pas très clairement désolé :pensive:) que les masques de collision (en rouge) de mon personnage et de ma plateforme ne se touchent pas : seule la zone bleue (rectangle englobant l’objet) du personnage touche la plateforme (la plateforme est seulement l’objet à gauche, le trait en dessous du personnage n’est que le chemin que suit la plateforme, le personnage passe donc à travers), et pourtant le personnage repose sur la plateforme !
Ce qui est le plus étrange, c’est qu’avant la mise à jour de Gdevelop vers la version 5.0.139, tout marchait très bien, je n’avais pas ce problème, et depuis la mise à jour, ce problème est apparu pour tous mes objets ayant le comportement “PlatformerObject”. Comme j’ai remarqué que ce comportement avait été en partie refait (quelques nouvelles fonctionnalités et quelques changements) depuis la mise à jour, je me suis dit que peut-être l’erreur (si c’en est une, peut-être est-ce fait exprès :person_shrugging:, auquel cas il existe sans doute une solution à mon problème) venait du logiciel, par exemple peut-être que lors de la refonte du comportement le programme n’a plus été fait avec les masques de collision mais avec les rectangles englobant les objets pour les Platformer. Pour vérifier cette hypothèse, j’ai créé un nouveau projet, où je n’ai mis aucun évènement, seulement un objet avec le comportement Platformer et un avec le comportement Plateforme, auxquels j’ai mis des masques de collision non-rectangulaires. J’ai testé, et le problème était toujours présent ! Le personnage volait, comme dans mon jeu, ce qui signifie que le problème ne vient pas d’un événement de mon jeu, mais (je pense) d’un élément nouveau de la mise à jour. Si c’est effectivement cela, d’autres personnes ont déjà dû avoir le même problème, or personne n’en parle dans les forums. Si quelqu’un a eu le même problème peut-il m’aider s’il-vous-plaît, ou sinon est-ce que quelqu’un pourrait faire le même test que moi (créer un projet avec uniquement les objets indiqués ci-dessus) et vérifier si pour vous aussi il y a un problème (auquel cas le problème vient sans doute de Gdevelop) ou si tout marche bien pour vous (auquel cas le problème vient peut-être de mon ordinateur ou de je-ne-sais-où). Merci :hugs:

Je crois que pour détecter si un plateformeur est au sol, la plus grosse largeur du masque de collision est prise en compte comme base, pour éviter des problèmes.
J’ai l’impression que c’est ton problème, mais oui, on ne voit pas grand-chose.
Tu peux montrer tes masques de collision dans les propriétés des objets ?

Ah d’accord ça doit être ça merci, je ne savais pas. C’est dommage que les créateurs n’aient pas laissé le choix entre utiliser la plus grosse largeur ou juste les masques de collision, en tout cas pour mon jeu je préférais comme avant.
Les masques de collision au cas où (toujours en 2 fois car je suis toujours nouveau :sob:) :

Merci, tes masques de collision ont l’air corrects.

Dans les notes de version récentes, je n’ai pas vu de changements des comportements plateformes, es-tu sûr que ça vient d’un changement récent de GDevelop et non pas d’une modif de ton projet ?

Pour vérifier si le problème venait de GDevelop, j’ai testé mon jeu sur une ancienne version de Gdevelop (version 5.0.0) et les Platformer utilisaient bien les masques de collision et non pas la plus grosse largeur, contrairement à maintenant. Quand je parlais de changements du comportement plateforme, c’était seulement quelques ajouts (possibilité de traverser une plateforme de haut en bas avec la flèche du bas, possibilité de changer la vitesse actuelle des Platformer…), et aussi maintenant dans les événements il est écrit “vitesse horizontale maximale” là où il y avait “vitesse maximale” avant la mise à jour, c’est pour cela que j’ai supposé qu’une partie du comportement avait été refait et que j’ai fait le lien avec mon problème sur les Platformer apparu en même temps.
Au final, j’ai décidé de contourner le problème, en modifiant les masques de collision de mes Platformer comme ceci :


de manière à éviter le problème, et ça marche pour tous mes persos, c’est juste qu’un bout peut traverser les murs mais ça rend bien quand même. Du coup je ne sais toujours pas comment résoudre le problème mais mon jeu marche très bien comme ça.
Du coup merci beaucoup de m’avoir aidé, Gruk, si tu trouves la solution au problème peut-être que ça aidera d’autres gens mais pour l’instant pour moi c’est bon.

1 Like