Java OOP
2D-Spielerbewegung mit Delta-Time & Normalisierung
Zwei wichtige Grundlagen für ruckelfreie und faire Bewegung in Spielen: Floating-Point-Koordinaten: Positionen (x, y) müssen als double geführt werden, um bei kleinen Werten (Speed \times deltaTime) Rundungsfehler von int zu vermeiden. Vektornormalisierung: Bei gleichzeitiger Diagonaleingabe (dx = 1, dy = 1) wäre der Bewegungsvektor nach Pythagoras \sqrt{1^2 + 1^2} \approx 1,41 lang (der Spieler wäre diagonal ~41% schneller). Der Vektor muss durch seine Länge geteilt werden.
Referenz:
Datei
1. Spielprojekt
· Klasse Player
// Diagonalbewegung normalisieren
if (dx != 0 && dy != 0) {
double length = Math.sqrt(dx * dx + dy * dy);
dx /= length;
dy /= length;
}
// Framerate-unabhängige Bewegung
x += dx * speed * deltaTime;
y += dy * speed * deltaTime;