Ich entwickle gerade ein Spiel für Android, und ich hätte gerne Ihre Expertise zu einem Thema, das ich habe.Android-Spielentwicklung: Kollisionserkennung fehlgeschlagen
Hintergrund:
Mein Spiel beinhaltet unabhängige Bewegung Framerate, die in den Deltazeitwert berücksichtigt, bevor notwendig Geschwindigkeit Berechnungen.
Das Spiel ist ein traditionelles 2D Platformer.
Das Problem:
Hier ist meine Frage (vereinfacht). Stellen wir uns vor, dass mein Charakter ein Quadrat ist, das auf einer Plattform steht (wobei "Gravitation" eine konstante Abwärtsgeschwindigkeit von characterVelocityDown ist).
I die Kollisionserkennung wie folgt (unter der Annahme, Y-Achse nach unten zeigt) definiert haben:
Gegeben characterFootY ist die y-Koordinate der Basis meiner quadratischen Charakter, platformSurfaceY ist die obere y -Koordinate meiner Plattform und platformBaseY ist die untere y-Koordinate meiner Plattform:
if (characterFootY + characterVelocityDown > platformSurfaceY && characterFootY + characterDy < platformBaseY) {
//Collision Is True
characterFootY = platformSurfaceY;
characterVelocityDown = 0;
} else{
characterVelocityDown = deltaTime * 6;
Dieser Ansatz funktioniert p in Ordnung, wenn das Spiel mit normaler Geschwindigkeit läuft; Wenn jedoch das Spiel verlangsamt, das DELTA (die die verstrichene Zeit zwischen dem vorhergehenden Frame und dem aktuellen Frame) groß wird, und characterFootY + characterVelocityDown überschreiten die Grenzen, die die Kollisionserkennung und das Zeichen definieren fallen einfach geradeaus (als ob Teleportieren).
Wie sollte ich dieses Problem angehen, um dies zu verhindern?
Vielen Dank im Voraus für Ihre Hilfe und ich freue mich darauf, von Ihnen zu lernen!
Wenn jemand anderes dieses Problem hat, besteht eine mögliche Lösung darin, den deltaTime-Wert so zu begrenzen, dass er, wenn er über einem bestimmten Wert liegt, gleich dem Cap gesetzt wird. Dies würde die Spielgeschwindigkeit inkonsistent machen, sollte aber in den meisten Fällen in Ordnung sein. – SeveN
Haben Sie sowohl die Vorher-Nachher-Deltawerte, als auch den Vergleich dort? – cjk