Flackern bei 2D Kamera
Verfasst: 10.08.2020, 20:30
Guten Abend,
ich beschäftige mich aktuell mit der Kamera für ein 2D Spiel. Die Kamera wird direkt über der Spielfigur positioniert, die Spielfigur befindet sich also in der Mitte und die Umgebung bewegt sich. Leider tritt jetzt in gewissen Konstellationen ein Flackereffekt auf, wenn sich die Spielfigur und ein weiterer Sprite mit gleicher Geschwindigkeit in die gleiche Richtung bewegen:
Start --> Player (0f, 0.25f), Sprite (0f, 0.75f) --> wird gerendert auf Player (0, 0), Sprite (0, 0) --> Offset Player/ Sprite (0f, 0f)
Step 1, +(0f, 0.5f) --> Player (0f, 0.75f), Sprite (0f, 1.25f) --> wird gerendert auf Player (0, 0), Sprite (0,1) --> Offset Player/ Sprite (0, 1)
Step 2, +(0f, 0.5f) --> Player (0f, 1.25f), Sprite (0f, 1.75f) --> wird gerendert auf Player (0, 1), Sprite (0,1) --> Offset Player/ Sprite (0, 0)
Step 3, +(0f, 0.5f) --> Player (0f, 1.75f), Sprite (0f, 2.25f) --> wird gerendert auf Player (0, 1), Sprite (0,2) --> Offset Player/ Sprite (0, 1)
Step 4, +(0f, 0.5f) --> Player (0f, 2.25f), Sprite (0f, 2.75f) --> wird gerendert auf Player (0, 2), Sprite (0,2) --> Offset Player/ Sprite (0, 0)
Step 5, usw.
...der Offset zwischen Player und Sprite verändert sich in jedem Step um 1 Pixel, was sich in einem sehr bemerkbaren Flackern auswirkt.
Ich bin sicher nicht der Erste der auf dieses Problem gestoßen ist, gibt es dafür eine Lösung oder Workaround? Es sind alle Bewegungsrichtungen möglich, wenn es nur die Achsen wären könnten man z.B. auf ganzzahlige Richtungsvektoren beschränken.
ich beschäftige mich aktuell mit der Kamera für ein 2D Spiel. Die Kamera wird direkt über der Spielfigur positioniert, die Spielfigur befindet sich also in der Mitte und die Umgebung bewegt sich. Leider tritt jetzt in gewissen Konstellationen ein Flackereffekt auf, wenn sich die Spielfigur und ein weiterer Sprite mit gleicher Geschwindigkeit in die gleiche Richtung bewegen:
Start --> Player (0f, 0.25f), Sprite (0f, 0.75f) --> wird gerendert auf Player (0, 0), Sprite (0, 0) --> Offset Player/ Sprite (0f, 0f)
Step 1, +(0f, 0.5f) --> Player (0f, 0.75f), Sprite (0f, 1.25f) --> wird gerendert auf Player (0, 0), Sprite (0,1) --> Offset Player/ Sprite (0, 1)
Step 2, +(0f, 0.5f) --> Player (0f, 1.25f), Sprite (0f, 1.75f) --> wird gerendert auf Player (0, 1), Sprite (0,1) --> Offset Player/ Sprite (0, 0)
Step 3, +(0f, 0.5f) --> Player (0f, 1.75f), Sprite (0f, 2.25f) --> wird gerendert auf Player (0, 1), Sprite (0,2) --> Offset Player/ Sprite (0, 1)
Step 4, +(0f, 0.5f) --> Player (0f, 2.25f), Sprite (0f, 2.75f) --> wird gerendert auf Player (0, 2), Sprite (0,2) --> Offset Player/ Sprite (0, 0)
Step 5, usw.
...der Offset zwischen Player und Sprite verändert sich in jedem Step um 1 Pixel, was sich in einem sehr bemerkbaren Flackern auswirkt.
Ich bin sicher nicht der Erste der auf dieses Problem gestoßen ist, gibt es dafür eine Lösung oder Workaround? Es sind alle Bewegungsrichtungen möglich, wenn es nur die Achsen wären könnten man z.B. auf ganzzahlige Richtungsvektoren beschränken.