Keller-Dev Docs · Java & Hytale

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;
#math #2d-physics #player-movement #delta-time #vector-math
Bearbeiten