我正在制作一个游戏,玩家控制一个太空船,它在中心点周围以时钟/逆时针方向旋转,同时射出来自该点的射弹。我已写完所有内容,但实际位置稍微偏离且旋转无效。
为了运动,我有:
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
围绕其中心点旋转图像并使其始终面向中心点吗?
答案 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坐标,然后围绕中心点旋转(略微调整角度)。