Thanks for both your replies, im sure it’ll be of great help to me.
Could you explain your code a little more for me Malohkan? At the moment if the player simply moves up, down, left (straffe) or right (straffe) then i create an Affinetransform called transMove like this
transMove = player.getTransMove();
                        transMove.translate(player.getSpeed(), 0);
      
                        player.setX(player.getX()+player.getSpeed());
                        player.setTransMove(transMove);
                        
                        player.setRotate(false);
                        player.setMove(true);
And if the player rotates left or right i create an AffineTransform called transRotate like this
            Point2D before = new Point2D.Double(player.getX() , player.getY());
            Point2D after = new Point2D.Double();
            
            transRotate = player.getTransRotate();
            transRotate.translate(player.getX(), player.getY());
            transRotate.translate(-player.getX(), -player.getY());
            transRotate.rotate(Math.toRadians(angle), xRot , yRot);
            
            after = transRotate.transform(before, after);
            player.setX((int)transRotate.getTranslateX());
            player.setY((int)transRotate.getTranslateY());
            
            player.setTransRotate(transRotate);
            player.setRotate(true);
            player.setMove(false);
Then when i paint, i have to check weather  the players moved or rotated and draw him like this
//if he simply moved
g.drawImage(player.getImage(), player.getTransMove(), null);
.
.
//if he rotated
g.drawImage(player.getImage(), player.getTransRotate(), null);
I know this is a terrible way of doing this, thats why im hoping u can help me create an AffineTransfrom a better way, and maybe be able to draw using only the 1 AffineTransform.
Hope you can help, thanks.