Personnage atterrit dans les air (Platformer character)


#1

Et bonjour!

J’ai pu échanger avec quelqu’un sur le discord, qui m’a recommandé de partager mon problème ici.
Du coup j’ai un petit projet tout simple, en pixel art, de résolution 320x180 que j’agrandis en passant le jeu en plein écran.

Pour l’instant, je n’ai qu’un personnage et une plateforme, avec leurs behaviors respectifs. Mais régulièrement, après un saut, le personnage atterri “dans les airs”, a un pixel du sol, ce qui se voit avec ma résolution.
A la louche, cela arrive une fois tous les 10 sauts, mais ce n’est pas constant. Cela peut arriver 2 fois sur 7 saut, comme une seule fois en une 20aine de sauts. Il faut spammer la touche espace pour repérer le bug.

Le scale mode des propriétés est réglé sur Nearest, de manière à ce que les contours des sprites soient nets, et j’ai également enlevé le smoothing via la fenêtre resources.

Ex Ex2

Il n’y a rien dans les events, mis à part le passage en plein écran, et la possibilité de quitter le jeu en appuyant sur la touche esc.

On m’a également proposé de partager le projet de manière à faciliter l’identification du bug. Je sais pas quelle est la démarche à suivre, du coup je l’ai upload sur google drive. Vous pouvez le récupérer ici:
https://drive.google.com/drive/folders/13pAG26TgsBQn0tckkFU8UBPPAJVnLcpA?usp=sharing

Il y a probablement une manière plus adaptée de partager un projet sur ce forum, hésitez pas à me rediriger dessus!

Merci beaucoup pour votre aide :slight_smile:


EDIT: il semblerait que le bug ne se produisent que lorsque le saut est effectué avec un déplacement (gauche ou droite).


#2

Sorry, an English reply on a French thread.

I think the problem lies with your hitbox vertices. I enabled the debugging view of bounding boxes. Here is what it normally looks like:

image

And here is what it looks like when your character floats:

image

There is a pixel in the bottom right of your character that’s poking down.

I suggest you edit your hitbox vertices, and make them integers. I did the following and the problem disappeared:

image


#3

Hey!

Don’t worry for the language, english will do for me too! So, I tried to modify the collision mask with integers coordinates, but the “bug” is still there. I tried different integers vertices, the ones from your example too, but he still lands on this invisible pixel one time out of ten.

I tried to find the bouding boxes debuggig view, but didnt succeed.
This is what I found on the debugger tho. Seems the character itself is not located on integers coordinates.

image

Anyway, thanks a lot for your quick reply, that is so nice of you! I’ll keep looking for solutions, and if I don’t find any, I’ll try upscaling everything as someone suggested in the discord server. :slightly_smiling_face:


#4

To get the debugging view, add it as an action:


#5

Look at this, the same is happening to me in my game


Not solved yet.


#6

Comme le dit si bien MrMen, le masque de collision est pas très propre, mettre des valeurs arrondi aidera.

Avec le masque de collision par défaut l’écart n’est pas présent.
Place les points du masque avec précision sur le bas.