【问题标题】:Having an object revolve and face a center point让一个物体旋转并面对一个中心点
【发布时间】:2012-10-04 18:00:35
【问题描述】:

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

对于运动,我有:

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 用什么来围绕其中心点旋转图像并使其始终面向中心点?

【问题讨论】:

    标签: java trigonometry


    【解决方案1】:
            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 坐标,然后围绕中心点旋转(稍微调整角度)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多