2013-05-12 20 views
5

私のオルソカメラの回転をlibgdx(project2)とbox2d本体の回転に結びつける方法を見つけることができません。 ありcam.rotate(XY)の方法はそれを衝動や加速度を与えること、であるが、私は決定的な値が、どのように私はこれをやって行くだろうLibgdxのカメラ回転を設定する

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

のようなものを設定したいと思いますか?私自身の関数を書く必要がありますか?もしそうなら、どのように?私はカメラの回転が常にプレーヤーと同じになるようにします...

ありがとう!

答えて

6

良い夜の睡眠の後、私はちょうど心のソリューションで目を覚ました! cam.angle(angle)関数は、明らかにあなたが望む角度(度)を設定しますが、updateループでは一度だけ行う必要があります。そうしないと、カメラは回転を開始します。それは明らかですが、私はそれを得ていませんでした。カメラの

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

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

他の問題はBOX2D体は「無限」度は(私は* MathUtils.radiansToDegreesで度にすべてを変換する)持っているということですので、私は0〜359にこれらを制限しなければなりませんでした度は-180から180に行くので、あなたもこれらを変換する必要があります0〜359:

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

camAngle = -getCameraCurrentXYAngle(camera) + 180; 

「getCameraCurrentXYAngle(カム)は、次の関数であります

そして今使用中のこれはあなたのプレーヤーの回転カム更新する:

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

私はこれは私の質問をupvoted人に役立ちます願っています;)

乾杯をし、生産的な一日を過ごします! ジョナス

関連する問題