Java 使用仿射变换同时移动和旋转图像

Java 使用仿射变换同时移动和旋转图像,java,Java,我正在编写一个简单的射击游戏,我想把我的角色旋转到鼠标和“开火”的方向。我已经完成了所有的代码,除了旋转实际的图像。以下是我到目前为止的一些代码:(这都在PAINT组件方法下) 我现在如何“设置”Graphics2D对象的图像x和y坐标以绘制它???看看这个: 在你的情况下,你会先旋转然后平移,而不是平移和缩放。对不起,忽略最后一个a.setToRotation(θ,xCent,yCent);我已经试过了,但是平移(x,y)似乎覆盖了旋转(θ) xCent = x + 50; y

我正在编写一个简单的射击游戏,我想把我的角色旋转到鼠标和“开火”的方向。我已经完成了所有的代码,除了旋转实际的图像。以下是我到目前为止的一些代码:(这都在PAINT组件方法下)

我现在如何“设置”Graphics2D对象的图像x和y坐标以绘制它???

看看这个:


在你的情况下,你会先旋转然后平移,而不是平移和缩放。

对不起,忽略最后一个a.setToRotation(θ,xCent,yCent);我已经试过了,但是平移(x,y)似乎覆盖了旋转(θ)
   xCent = x + 50;
    yCent = y + 50; // x and y center of image ( x and y change depending on Keyboard Input)       
    a.setToRotation(theta, xCent,yCent); // a = new AffineTransform()    Here is my calculation of theta (under the MouseMotionListener):  theta = Math.atan2(e.getY() - yCent,e.getX() - xCent);
    a.setToTranslation(x,y);
    a.setToRotation(theta, xCent,yCent);
    g2.drawImage(charac,a, null);
public void paint(Graphics g) {`

    AffineTransform transformer = new AffineTransform();
    transformer.translate(5,5);
    transformer.scale(2,2);
    Graphics2D g2d = (Graphics2D)g;
    g2d.setTransform(transformer);
    // draw to g2d.
}