1

Libgdx と Box2Dlights を使用してDon't Starveに似たゲームを書いて います。この表面にいくつかのビルボード オブジェクトがある平面の世界があります。そのため、パースペクティブ カメラが使用されます。画面の法線と表面 (地面) の法線の間の角度は 45° です。これらのオブジェクトの一部は、すべての方向に光を放ちます (キャンプファイヤー)。そのため、 RayHandlerクラスを使用してそれらを処理します。RayHandlerの結合マトリックスを設定するメソッドには、ビューポートの幅と高さが必要です。パースペクティブカメラビューポートがこのメソッドに渡され、レンダリングされたライトは、その中心が画面から外れると消えます。ユーザーが消えた瞬間を見ないように、光が画面から完全に外れたとき (中央だけでなく) にのみ光が消えるようにするにはどうすればよいですか? ありがとうございました。

アップデート:

メソッドにはOrthographicCamerarayHandler.setCombinedMatrix(camera);が必要です。私が使用するカメラはパースペクティブです。だから私には使えない。私に残された唯一のオプションは、を使用することです。ここで、PerspectiveCameraの結合されたマトリックスをその位置とビューポートと共に渡すことができますが、まだ正しくないビューポートが得られるため、望ましい結果が得られません (おそらく、カメラが 3D 空間にあり、傾いています)。rayHandler.setCombinedMatrix(camera)setCombinedMatrix(Matrix4 combined, float x, float y, float viewPortWidth, float viewPortHeight)

4

1 に答える 1

0

コードを提供しなかったので、役立つかもしれない背景だけを提供します。レイハンドラーは安全なパフォーマンスのためにカリングを使用します。画面のライトはレンダリングしません。画面の境界は、次の入力によって計算されます。

rayHandler.setCombinedMatrix(camera);

render()の直前にメソッドで呼び出して、最新の状態に保つ必要がありますrayHandler.updateAndRender()

https://github.com/libgdx/box2dlights/wiki/How-To

于 2016-08-26T06:18:04.217 に答える