Ich fange an, ein 2D-Spiel zu bauen und habe etwas Verwirrung um, ob ich Rotation in der Update-Funktion oder der Render-Funktion durchführen sollte.Führen Sie 2D-Vertices Rotation in Update-Funktion oder Render-Funktion
Das Problem ist das;
Ich habe ein Dreieck, bestehend aus drei Ecken. Das Dreieck hat einen Rotationswert in Grad.
Wenn ich die Scheitelpunkte in der Update-Funktion rotiere, dreht sich das Dreieck für immer, da jedes Update die Drehung immer wieder anwendet.
Daher entschied ich mich, die Vertices in der Update-Funktion nicht zu rotieren und stattdessen die Rotation basierend auf den ursprünglichen Vertices in der Render-Funktion durchzuführen.
Das funktioniert, aber jetzt habe ich ein anderes Problem. Die Ecken sind nicht wirklich dort, wo sie zu sein scheinen. Daher kann ich die Scheitelpunkte nicht verwenden, um eine Kollisionserkennung usw. durchzuführen.
Die einzige Idee, die ich lösen muss, ist, dass ich die Drehung in der Update-Funktion ausführen kann, aber zwei Scheitelpunkte habe; eine für die ursprünglichen Scheitelpunkte, eine der gedrehten Scheitelpunkte. Dann benutze die gedrehten Ecken in den Kollisionserkennungsberechnungen - das riecht hacky und ineffizient!
Ich habe einen Codepen zusammengebaut, der das Anwenden der Drehung in der Wiedergabefunktion demonstriert; https://codepen.io/anon/pen/pPRjLq
Use arrow keys to rotate
So sollte ich drehen machen oder aktualisieren? Wenn rendern dann wie halte ich Scheitelpunkte auf dem neuesten Stand? Wenn update dann wie verhindere ich unendliche Rotationen?
Jede Hilfe von erfahrenen Menschen würde sehr geschätzt werden - danke!