Derzeit habe ich einen Plattformer mit Kacheln für das Gelände (Grafiken aus Cave Story). Das Spiel wurde mit XNA von Grund auf neu geschrieben, daher verwende ich keine vorhandene Engine oder Physik-Engine.
Die Kachelkollisionen werden ziemlich genau wie in dieser Antwort beschrieben beschrieben (mit einfachem SAT für Rechtecke und Kreise), und alles funktioniert einwandfrei.
Außer wenn der Spieler beim Fallen / Springen gegen eine Wand stößt. In diesem Fall fangen sie eine Fliese und denken, sie hätten einen Boden oder eine Decke erreicht, die eigentlich nicht da ist.
In diesem Screenshot bewegt sich der Player nach rechts und fällt nach unten. Nach der Bewegung werden Kollisionen überprüft - und zunächst stellt sich heraus, dass der Spielercharakter mit dem 3. Plättchen vom Boden aus kollidiert und nach oben gedrückt wird. Zweitens hat er festgestellt, dass er mit dem Plättchen neben sich kollidiert und seitwärts geschoben wurde. Das Endergebnis ist, dass der Spielercharakter glaubt, auf dem Boden zu sein und nicht zu fallen, und auf dem Plättchen „fängt“, solange er darauf läuft .
Ich könnte dies lösen, indem ich stattdessen die Kacheln von oben nach unten definiere, wodurch er reibungslos fällt, aber dann passiert der umgekehrte Fall und er stößt an eine Decke, die nicht vorhanden ist, wenn er gegen die Wand nach oben springt.
Wie soll ich vorgehen, um dieses Problem zu lösen, damit der Spielercharakter einfach so an die Wand fallen kann, wie er sollte?