Hi,
ich arbeite gerade an einem Projekt für die Schule, ein kleines Spiel. Dabei habe ich jetzt einen Hintergrund und ein Bild als Player eingefügt. Dieses kann ich mit WASD bewegen, jedoch brauche ich für das richtige Spiel beim betätigen der Tasten D und A das sich das Objekt rotiert. Dieses tut es auch jedoch liegt der Punkt an dem es sich rotiert außerhalb des eigentlichen Bildes und rotiert sich so nicht mittig. Wie kann ich jetzt einen "Anker Punkt" setzen an dem sich das Objekt rotiert?
ich arbeite gerade an einem Projekt für die Schule, ein kleines Spiel. Dabei habe ich jetzt einen Hintergrund und ein Bild als Player eingefügt. Dieses kann ich mit WASD bewegen, jedoch brauche ich für das richtige Spiel beim betätigen der Tasten D und A das sich das Objekt rotiert. Dieses tut es auch jedoch liegt der Punkt an dem es sich rotiert außerhalb des eigentlichen Bildes und rotiert sich so nicht mittig. Wie kann ich jetzt einen "Anker Punkt" setzen an dem sich das Objekt rotiert?
Java:
package entity;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import main.GamePanel;
import main.KeyHandler;
public class Player extends Entity{
GamePanel gp;
KeyHandler keyH;
public static int playerrotate =0;
public Player(GamePanel gp, KeyHandler keyH) {
this.gp = gp;
this.keyH = keyH;
setDefaultValues();
getPlayerImage();
}
public double angle;
public void setDefaultValues() {
x = 100;
y = 100;
speed = 2;
direction = "up";
}
public void getPlayerImage() {
/* try {
//car = ImageIO.read(getClass().getResourceAsStream("res/player/Auto.png"));
} catch(IOException e) {
e.printStackTrace();
} // end of try */
}
public void update() {
if(keyH.upPressed == true) {
direction = "up";
y = y - speed;
}
else if (keyH.downPressed == true) {
direction = "up";
y = y + speed;
}
else if (keyH.leftPressed == true) {
direction = "left";
playerrotate = playerrotate + 10;
//x = x - speed;
}
else if (keyH.rightPressed == true) {
direction = "right";
playerrotate=playerrotate+10;
//x = x + speed;
}
}
public void draw(Graphics2D g2) {
//g2.setColor(Color.white);
//g2.fillRect(x, y, gp.tileSize, gp.tileSize);
try {
BufferedImage image = ImageIO.read(new File("auto.png"));
Graphics2D g2d = (Graphics2D) g2;
AffineTransform transform = new AffineTransform();
transform.rotate(playerrotate);
g2d.setTransform(transform);
g2.drawImage(image, x, y, gp.tileSize, gp.tileSize, null);
} catch(Exception e) {
}
/*switch(direction) {
case "up":
image = car;
break;
}*/
//g2.drawImage(image, x, y, gp.tileSize, gp.tileSize, null);
}
}