Keller-Dev Docs · Java & Hytale

Java Core

Trennung von Spielwelt-Kamera und HUD/UI-Rendering

In 2D-Spielen mit scrollender Kamera müssen zwei Arten von Zeichenoperationen unterschieden werden: Welt-Objekte (Tiles, Player, NPCs) und UI/HUD-Elemente (Dialogfenster, Lebensbalken). Umsetzung:Welt-Komponenten: Werden auf der transformierten Graphics2D-Kopie (cameraView) gezeichnet und scrollen mit der Kamera mit. UI-Elemente: Werden direkt auf dem ursprünglichen Graphics-Objekt (g) nach dem Schließen/Dispose der Kamera-View gerendert. Dadurch bleiben sie an einer festen Bildschirmposition (Screen-Space), unabhängig von der Spielerposition.

Referenz: Datei 1. Spielprojekt · Klasse GameWindow.GamePanel
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // 1. World-Space Rendering (transformiert)
    Graphics2D cameraView = (Graphics2D) g.create();
    cameraView.translate((int) Math.round(-camera.getX()), (int) Math.round(-camera.getY()));

    drawTileMap(cameraView);
    drawInteractables(cameraView);
    player.draw(cameraView);

    cameraView.dispose(); // Transformed Context verwerfen

    // 2. Screen-Space / HUD Rendering (untransformierte Original-Graphics)
    if (dialogBox.isVisible()) {
        drawDialogBox(g);
    }
}
#swing #rendering #camera #hud #ui #graphics2d
Bearbeiten