使物体旋转并面向中心点

时间:2012-10-04 18:00:35

标签: java trigonometry

我正在制作一个游戏,玩家控制一个太空船,它在中心点周围以时钟/逆时针方向旋转,同时射出来自该点的射弹。我已写完所有内容,但实际位置稍微偏离且旋转无效。

为了运动,我有:

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);
}

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

1 个答案:

答案 0 :(得分: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坐标,然后围绕中心点旋转(略微调整角度)。