0

libGDX でゲームを作成しており、box2dlights を使用してライトをレンダリングすることにしました。ほとんどのコードは純粋な LWJGL で既に完了していたため、ここまではカメラをあまり使用しませんでした。すべての座標を処理する必要がある主な操作は 2 つあります。

1 つ目は、画面をマップの位置に変換することです (マップは画面よりも大きく、プレイヤーの位置によってマップのどの部分が表示されるかが決まります)。たとえば、プレーヤーが (50, 30) にいる場合、すべてを (-50, -30) で変換して、プレーヤーが中央にくるようにします。

2 つ目は、すべてに定数を掛けることです。つまり、box2d メートルから画面上のピクセルへの変換です。

ただし、box2dlights レンダリングにアクセスできないため、これら 2 つの情報をレイ ハンドラーに渡す必要があります。これを行う唯一の方法は、カメラを使用することです。そこで、Orthographic Camera を作成し、すべての座標から手動で deltaS を減算する代わりに、描画する前にすべてのティックで deltaS に変換しました。その部分は完璧に機能します。一方、ズームは画面の中央を基準にズームインおよびズームアウトするため、機能していないようです。たとえば、ズーム = 2 に設定すると、画面は 2 倍に縮小されますが、画面の中央に配置されます。座標 (0,0) は、予想どおり (0,0) ではなく、screen.width/4 です。

すべての座標を数値で乗算するようにカメラを設定する方法はありますか? 私の問題が非常に明確なのか一般的なのかはわかりませんが、どこにも何も見つかりません。

4

1 に答える 1

0

私はついにそれを理解しました!問題は、使用する前にズームを設定する必要があることでした

camera.setToOrtho(true, SCREEN_WIDTH, SCREEN_HEIGHT);

そのメソッドは現在のズームを使用してそのプロパティを設定するためです。お役に立てれば!

于 2013-09-16T11:53:47.830 に答える