2013-05-12 89 views
5

我似乎无法找到一种方法,将libgdx(带有box2d的项目)中我的相机的旋转与box2d主体的旋转绑定。 有cam.rotate(XY)的方法,给它一个冲动或加速,但我想设置一个确定的值,像在Libgdx中设置相机旋转

cam.setAngle(player.body.getAngle()); 

我将如何去这样做呢?我必须写自己的功能吗?如果是这样,那么怎么样?我希望相机的旋转始终与玩家的相同...

谢谢!

回答

6

经过一个良好的夜间睡眠,我刚刚醒来的解决方案记住! (角度)显然确实将角度设置为你想要的角度(以度为单位) - 但是你必须只做一次而不是在你的更新循环中,否则相机就开始旋转。这是显而易见的,但我只是没有得到它。

另一个问题是Box2D的身体有“没完没了”度(我转换一切度* MathUtils.radiansToDegrees),所以我不得不来约束这些为0至359:

playerAngle = player.body.getAngle()*MathUtils.radiansToDegrees; 

while(playerAngle<=0){ 
     playerAngle += 360; 
    } 
while(playerAngle>360){ 
     playerAngle -= 360; 
    } 

相机的度去从-180到180,所以你也必须将其换算成0到359:

camAngle = -getCameraCurrentXYAngle(camera) + 180; 

功能“getCameraCurrentXYAngle(CAM)如下:

public float getCameraCurrentXYAngle(OrthographicCamera cam) 
{ 
    return (float)Math.atan2(cam.up.x, cam.up.y)*MathUtils.radiansToDegrees; 
} 

而现在使用它来更新您的凸轮您的播放器的旋转:

camera.rotate((camAngle-playerAngle)+180); 

我希望这有助于谁upvoted我的问题的人;)

欢呼和有一个富有成效的一天! Jonas