我在基于Slick2d的Java游戏中有一个简单的图像,我试图将它旋转90度。但是,当使用“Image.rotate(角度)”方法时,图像最终会移动以及旋转。我已经尝试将旋转中心强制设置为图像的精确中心,但结果是相同的。这是前后拍摄。这个想法是坦克将旋转90度并保持在同一个方格。强制设定的旋转中心由旋转后的点显示:
在:
在:
代码:
public void turn(String direction){
if(direction.equals("right")){
if(movableEntityImage.getRotation() != 90){
System.out.println("Pre rotate x = " + x + " . Pre rotate y = " + y + ". width = " + width + ". height = " + height);
System.out.println("Pre rotate rotation = " + movableEntityImage.getRotation());
float rotX = (x + (width/2));
float rotY = (y + (height/2));
movableEntityImage.setCenterOfRotation(rotX, rotY);
System.out.println("center of rotation X = " + movableEntityImage.getCenterOfRotationX() + ".center of rotation y = "+ movableEntityImage.getCenterOfRotationY());
movableEntityImage.rotate(90);
System.out.println("Post rotate x = " + x + " . Post rotate y = " + y);
System.out.println("Post rotate rotation = " + movableEntityImage.getRotation());
}
}
最后是控制台输出:
The tank has been created with an x of: 50.0 and a y of: 50.0
Pre rotate x = 50.0 Pre rotate y = 50.0 width = 25.0 height = 25.0
Pre rotate rotation = 0.0
Center of rotation X = 62.5 Center of rotation y = 62.5
Post rotate rotation = 90.0
我错过了什么吗?或者我以错误的方式解决了这个问题。
谢谢, 约什
答案 0 :(得分:0)
解决。 问题在于旋转中心。看来,当您为图像设置旋转中心时,轴0,0实际上位于图像的左上角,而不是游戏容器的左上角。 所以在我的例子中,我将旋转中心x坐标设置为图像的X坐标加上宽度超过2,实际上我只需将其设置为宽度超过2。