Buonasera, ho un problema con la rotazione delle immagini in un programma Java. La situazione è questa: ho una classe che estende JPanel e che viene inserito in un JFrame. Questo JPanel è il mio contesto grafico del "gioco". Quindi dentro la classe ho una variabile Graphics2D che sarà incaricata, dentro del metodo panelRenderer(), di disegnare il tutto.
codice:
private void panelRender() {
if (dbImage == null) { // Image dbImage;
dbImage = createImage(PWIDTH, PHEIGHT);
if (dbImage == null) {
System.out.println("dbImage is null");
return;
} else
dbg = dbImage.getGraphics(); //Graphics dgb;
}
dbg2d = (Graphics2D) dbg; //Graphics2D dbg2d;
dbg2d.drawImage(bg, 0, 0, null); //Image bg; (sfondo del programma)
dbg2d.setColor(Color.gray);
dbg2d.drawString("THE BIRD IS FLYING", 200, 50);
py.draw(dbg2d); //Player py = new Player();
}
fin qui ok. Tutto ok, tutto si disegna bene. Adesso, la parte problematica è questa:
codice:
class Player {
.
.
.
public void draw(Graphics2D g2d) {
AffineTransform rot = new AffineTransform();
rot.rotate(Math.toRadians(50), SIZE/2, SIZE/2);
rot.translate(posx, posy);
g2d.drawImage(py, rot, null); //Image py;
}
.
.
.
}
come si vede, draw() viene richiamato da panelRender() per disegnare il personaggio 'py' che si muove automaticamente con il metodo move()
il problema è che con il metodo draw(), il personaggio disegnato viene completamente girato, ma anche le sue coordinate di posizione, quindi il personaggio non gira su se stesso mentre mantiene il suo movimento, che è quello che vorrei io, ma si muove nella sua direzione, ma modificata di 50°
Non so se mi spiego; quello che voglio io, appunto, è farlo girare su se stesso tutto il tempo mentre si sposta, ma non ho potuto capire se sto vedendo giusto, o bisogna usare un'altra classe o un'altro metodo.
Grazie a tutti in anticipo, spero poter risolvere questo problema che ormai non so più dove guardare