Coordinate Space JavaFX 2d Spiel

Lodoss

Aktives Mitglied
Moin,

ich bastel gerade an einem kleinen Spiel. In diesem Spiel gibt es eine Spielfläche die im prinzip endlos groß ist (viewport lässt sich nach belieben verschieben). Auf dieser Spielfläche sind Nodes (Planeten/Items/Spielfiguren/usw.)
Ich möchte das ganze so gestalten, das man prinzipiell beliebig Zoomen kann.

Zu diesem zweck habe ich mir ein ParallelCamera objekt auf die (FX) Scene gelegt. Der zoom erfolgt dann durch
camera.setScaleX(camera.getScaleX()-0.1);
camera.setScaleY(camera.getScaleY()-0.1);

bzw
camera.setScaleX(camera.getScaleX()+0.1);
camera.setScaleY(camera.getScaleY()+0.1);


Nun zum Problem:
Ich möchte mir ein Spielobjekt Node erstellen und dabei eine hochauflösende Textur verwenden (2000x2000 px +). Je größer ich meine Textur mache, destro größer ist aber auch der node im coordinaten-space meiner ParallelCamera. Genau das möchte ich aber nicht. Ich kann natürlich die Textur entsprechend runterskalieren, aber dann wird die Grafik beim heranzoomen der Camera pixelig.

Was ich im prinzip brauche ist eine transformation des Coordinaten-Space des Nodes auf den Coordinate-Space der Camera.

also sowas wie

Die Textur ist 2000x2000 pixel groß

der node 1 ist 100x100 in coordinaten groß
der node 2 ist 70x70 in coordinaten groß

beide lassen sich bis 2000x2000px anzeigefläche ohne pixelig zu werden zoomen

Kann mir jemand von euch eine Hilfestellung geben?

Scene code:
Java:
                Planet planet = new Planet();
                Group universe = new Group();
                universe.getChildren().add(planet);

                Scene scene = new Scene(universe, Color.BLACK);
                AlyaDisplay.this.setScene(scene);

                ParallelCamera camera = new ParallelCamera();
                scene.setCamera(camera);
                camera.setScaleX(camera.getScaleX()-0.9);
                camera.setScaleY(camera.getScaleY()-0.9);

Planet code:
Java:
public class Planet extends Region
{
    public Planet()
    {
        int width = 2000;
        int height = 2000;
      
        File img = new File("texture.png");
       
        Canvas planetCanvas = new Canvas(width,height);
        GraphicsContext gc = planetCanvas.getGraphicsContext2D();
      
        Image texture = null;
        try
        {
            texture = new Image(new FileInputStream(img));
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        gc.drawImage(texture, 0, 0, width, height);
      
        // ... apply of some effects

        this.getChildren().add(planetCanvas);
    }
[code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Vertex zu Bildschirm Coordinate ermitteln? Spiele- und Multimedia-Programmierung 3
A Space Invaders Spiele- und Multimedia-Programmierung 11
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
J Power of Two empty space Spiele- und Multimedia-Programmierung 4
D Space Invaders(KeyListener Problem) Spiele- und Multimedia-Programmierung 3
Developer_X Java3D-Ungeeignet für 3D Spiele wegen Heap Space=? Spiele- und Multimedia-Programmierung 23
J Rotieren eines 2D Images endet in Java heap space Error Spiele- und Multimedia-Programmierung 15
G suche das tutorial für den space invaders Spiele- und Multimedia-Programmierung 2
C Space Shooter Spiele- und Multimedia-Programmierung 11
M Space PingPong Game --> Performance ok? Spiele- und Multimedia-Programmierung 44
J javafx seltsames Verhalten mediaplayer Spiele- und Multimedia-Programmierung 23
L Minecraft [Minecraft] Spigot und JavaFX mit fxml Spiele- und Multimedia-Programmierung 0
K Video aus JavaFX Images generieren Spiele- und Multimedia-Programmierung 2
Sugan GUI verändern mit JavaFX Spiele- und Multimedia-Programmierung 1
Cromewell JavaFX Kollisionserkennung Spiele- und Multimedia-Programmierung 6
L JavaFX Objekte bewegen Spiele- und Multimedia-Programmierung 3
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
M JavaFX - MouseDragReleased ruft MouseDragExited auf Spiele- und Multimedia-Programmierung 2
G javafx MediaPlayer sound problem Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben