Hallo ihr lieben,
ich habe ein kleines Verständnisproblem bei einem 2D-Spiel welches ich programmieren will.
Und zwar gibt es eine 2D Welt in der jedes Element eine Position(x,y) und einen Blickwinkel besitzt.
Mein Problem ist, dass ich nicht genau Weiß wie ich die Elemente auf der Grafikoberfläche platzieren kann,
denn wenn der Spieler (der in der Mitte des Bildschirms angezeigt werden soll) seine Blickrichtung oder Position ändert müssen ja alle anderen Elemente mit ihrer relativen Position vom Spieler angezeigt werden. (Um das Gefühl zu erzeugen der Bildschirm würde rotieren)
Ich habe mich mal an einer kleinen Zeichnung versucht:
http://i.imgur.com/lvFZ5zk.jpg
Ich zeichne das ganze in einem JPanel über das Graphics2D-Objekt.
Weiß zufällig jemand die Lösung? Ich komme einfach nicht darauf, alle meine Lösungsversuche scheinen die anderen Elemente um den Ursprungspunkt rotieren zu lassen wenn ich den Spieler drehe.
Hier mal mein momentaner Code, der nicht wirklich funktioniert :/
ich habe ein kleines Verständnisproblem bei einem 2D-Spiel welches ich programmieren will.
Und zwar gibt es eine 2D Welt in der jedes Element eine Position(x,y) und einen Blickwinkel besitzt.
Mein Problem ist, dass ich nicht genau Weiß wie ich die Elemente auf der Grafikoberfläche platzieren kann,
denn wenn der Spieler (der in der Mitte des Bildschirms angezeigt werden soll) seine Blickrichtung oder Position ändert müssen ja alle anderen Elemente mit ihrer relativen Position vom Spieler angezeigt werden. (Um das Gefühl zu erzeugen der Bildschirm würde rotieren)
Ich habe mich mal an einer kleinen Zeichnung versucht:
http://i.imgur.com/lvFZ5zk.jpg
Ich zeichne das ganze in einem JPanel über das Graphics2D-Objekt.
Weiß zufällig jemand die Lösung? Ich komme einfach nicht darauf, alle meine Lösungsversuche scheinen die anderen Elemente um den Ursprungspunkt rotieren zu lassen wenn ich den Spieler drehe.
Hier mal mein momentaner Code, der nicht wirklich funktioniert :/
Java:
Player p = Main.player;
Vector playerPos = p.getPosition(); //Meine Eigene Klasse, nicht die aus java.util
int screenX = Main.window.getWidth();
int screenY = Main.window.getHeight();
g2d.translate(playerPos.getIntX(), playerPos.getIntY());
g2d.rotate(p.getView().getAngle());
for(int i=0;i<e.length;i++) {
e[i].paintComponent(g2d, 0, 0); //Zeichnen der Elemente
}
g2d.rotate(-p.getView().getAngle());
g2d.translate(-playerPos.getIntX(), -playerPos.getIntY());
g2d.translate(screenX/2, screenY/2);
Gfx.fillCenteredQuad(g2d, 0, 0, p.getHitBox()); //Statische Methode die an (0,0) den
//Spieler zeichnen soll.