0

我正在开发一款游戏,玩家控制一艘宇宙飞船,该飞船围绕中心点按时钟/逆时针方向旋转,同时从该点发射射弹。我把所有的东西都写好了,虽然实际的位置有点偏离并且旋转不起作用。

对于运动,我有:

if (code==KeyEvent.VK_LEFT) {
            trans.setToIdentity();
            trans.translate(player.x-10, player.y-10);
            player.moveLeft();
                            //trans.rotate(?)
            System.out.println(player.x + " " + 
                               player.y + " " + player.dX + " " + player.dY);
}

transAffineTransform在哪里,player.moveLeft()将玩家的坐标更改为圆上的一个点(按预期工作,使用 sin/cos/theta,简单触发)。当我用它绘制一个对象时,Graphics2D它会跟随坐标,但是当我使用导入的图像时,它会跟随几个(~25)像素。由于我有一个角度、x、y 和半径,我可以使用什么来AffineTransform围绕其中心点旋转图像并让它始终面向中心点?

4

1 回答 1

0
        if (code==KeyEvent.VK_LEFT) {
            trans.setToIdentity();
            player.moveLeft();
            trans.translate(player.x-shipImg.getWidth()/2,player.y-shipImg.getHeight()/2);
            trans.rotate(player.angle-1.57, shipImg.getWidth()/2, shipImg.getHeight()/2);
        }

弄清楚了。首先将船的中心点移动到玩家的 x,y 坐标,然后围绕中心点旋转(稍微调整角度)。

于 2012-10-04T19:42:25.617 回答