2D Platformer Kollisionsprobleme mit beiden Achsen

Ich arbeite an einem kleinen 2D-Plattform- / Kampfspiel mit C ++ und SDL und habe einige Probleme mit der Kollisionserkennung.

Die Levels bestehen aus einer Reihe von Kacheln, und ich benutze eine for-Schleife, um alle durchzugehen (ich weiß, dass dies möglicherweise nicht der beste Weg ist, und ich brauche möglicherweise auch dabei Hilfe). Für jede Seite des Zeichens bewege ich es um ein Pixel in diese Richtung und überprüfe auf eine Kollision (ich überprüfe auch, ob sich das Zeichen in diese Richtung bewegt). Bei einer Kollision setze ich die Velocity auf 0 und bewege den Player an den Rand des Plättchens.

Mein Problem ist, dass, wenn ich zuerst auf horizontale Kollisionen prüfe und der Player sich vertikal mit mehr als einem Pixel pro Bild bewegt, die horizontale Kollision behandelt wird und der Charakter zur Seite der Kachel verschoben wird, selbst wenn die Kachel darunter (oder darüber) liegt ) der Charakter. Wenn ich die vertikale Kollision zuerst behandle, geschieht dasselbe mit Ausnahme der horizontalen Achse.

Wie kann ich mit Kollisionen auf beiden Achsen umgehen, ohne dass diese Probleme auftreten? Gibt es einen besseren Weg, um mit Kollisionen umzugehen, als wie ich es mache?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage