Keller-Dev Docs · Java & Hytale

Java Core

2D-Kollisionsprüfung auf AABB-Basis mit Achsentrennung

Wird die Bewegung auf X- und Y-Achse gleichzeitig geprüft, bleibt der Charakter an Hindernissen hängen. Durch eine getrennte Prüfung bewegt sich der Spieler entlang der freien Achse weiter (Wall-Sliding). Details:Ecken-Prüfung: Es werden alle 4 Ecken der Bounding-Box gegen das Gitter getestet. Corner Inset (-1px): An der rechten und unteren Kante wird $1\text{ Pixel}$ abgezogen, um falsche Treffer an Exakt-Grenzen benachbarter Tiles zu vermeiden.

Referenz: Datei 1. Spielprojekt · Klasse Player
double newX = x + dx * speed * deltaTime;
double newY = y + dy * speed * deltaTime;

// X-Achse separat prüfen
if (!isColliding(newX, y, tileMap, interactables)) {
    x = newX;
}

// Y-Achse separat prüfen (nutzt bereits neues X!)
if (!isColliding(x, newY, tileMap, interactables)) {
    y = newY;
}
#collision #aabb #sliding #2d-physics #grid
Bearbeiten