6

libgdx (box2d を使用したプロジェクト) のオルソ カメラの回転を box2d ボディの回転に結び付ける方法が見つからないようです。cam.rotate(xy) のメソッドがあり、インパルスまたは加速度を与えますが、次のような決定的な値を設定したいと思います

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

どうすればこれを行うことができますか?独自の関数を作成する必要がありますか? もしそうなら、どうやって?カメラの回転を常にプレイヤーと同じにしたい...

ありがとうございました!

4

2 に答える 2

10

おやすみなさいの睡眠の後、私は解決策を念頭に置いて目が覚めました!関数 cam.angle(angle) は明らかに角度を希望する角度に設定します(度単位)-ただし、更新ループではなく、一度だけ実行する必要があります。そうしないと、カメラが回転し始めます。これは明らかですが、私はそれを理解できませんでした。

もう 1 つの問題は、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);

これが私の質問に賛成した人に役立つことを願っています;)

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

于 2013-05-13T04:46:25.560 に答える