2013-05-12 94 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