Hallo,
ich arbeite gerade an einem 2D Spiel (Platformer) und habe ein kleines Problem bei der Kollisionerkennung.
Hier zunächst ein Bild von der derzeitigen Situation:
Die Blaue Figur ist die Spielfigur und die weißen Blöcke die Spielumgebung, welche der Spieler eben nicht durchlaufen können soll.
Der Spieler besitzt für die Kollsionserkennung 4 Rechtecke/Rectangles (rot eingezeichnet).
Die weißen Blöcke besitzen ihren gesamten Block als sich als Rectangle für die Kollisionserkennung.
Die Kollisionserkennung funktioniert bisher einwandfrei bis auf 1 kleinen Bug:
Wenn ich mit der Spielfigur, so wie sie genau auf dem Screenshot knapp unter dem Block steht, springe, dann kollidiert der Spieler zwar mit dem Block, aber das obere Rectangle der Spielfigur streift am Block vorbei. Wirklich kollidieren tuen nur das rechte Rectangle der Spielfigur mit dem Block, woraufhin entsprechend falsch gehandelt wird (Spielfigur "rutscht" links seitlich in dem Fall am Block vorbei).
Wenn ich allerdings das obere und untere Rectangle der Spielfigur auf z.b. 1 Pixel Abstand bis zum Rand jeweils vergrößere, dann habe ich das Problem, dass wenn ich meine Spielfigur nach z.B. rechts gegen einen Block bewege, dann fälschlicherweise eine Kollision am oberen Rectangle des Spielers erkannt wird, da dieser eben bis zum rechten Rand reicht und ich meine Spielfigur mit 5 Pixel pro Tick bewege. Der obere und untere Rectangle müssen also mind. 6 Pixel seitlich Patz haben, damit dies nicht passiert....
Weiß jemand vielleicht eine Lösung für mein Problem?
ich arbeite gerade an einem 2D Spiel (Platformer) und habe ein kleines Problem bei der Kollisionerkennung.
Hier zunächst ein Bild von der derzeitigen Situation:
Die Blaue Figur ist die Spielfigur und die weißen Blöcke die Spielumgebung, welche der Spieler eben nicht durchlaufen können soll.
Der Spieler besitzt für die Kollsionserkennung 4 Rechtecke/Rectangles (rot eingezeichnet).
Die weißen Blöcke besitzen ihren gesamten Block als sich als Rectangle für die Kollisionserkennung.
Die Kollisionserkennung funktioniert bisher einwandfrei bis auf 1 kleinen Bug:
Wenn ich mit der Spielfigur, so wie sie genau auf dem Screenshot knapp unter dem Block steht, springe, dann kollidiert der Spieler zwar mit dem Block, aber das obere Rectangle der Spielfigur streift am Block vorbei. Wirklich kollidieren tuen nur das rechte Rectangle der Spielfigur mit dem Block, woraufhin entsprechend falsch gehandelt wird (Spielfigur "rutscht" links seitlich in dem Fall am Block vorbei).
Wenn ich allerdings das obere und untere Rectangle der Spielfigur auf z.b. 1 Pixel Abstand bis zum Rand jeweils vergrößere, dann habe ich das Problem, dass wenn ich meine Spielfigur nach z.B. rechts gegen einen Block bewege, dann fälschlicherweise eine Kollision am oberen Rectangle des Spielers erkannt wird, da dieser eben bis zum rechten Rand reicht und ich meine Spielfigur mit 5 Pixel pro Tick bewege. Der obere und untere Rectangle müssen also mind. 6 Pixel seitlich Patz haben, damit dies nicht passiert....
Weiß jemand vielleicht eine Lösung für mein Problem?