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);
}
}