4

だから私はJava 3Dでゲームに取り組んでいて、ユニットの上に浮かぶヘルスバーを実装しています。

まず、ユニットの位置の上の 3D ポイントにクワッドを描画し、ビルボード ビヘイビアーを適用して常にカメラの方を向くようにしました。

しかし、私が立ち往生している問題は、ヘルスバーが他の風景によって時々隠されることです.

そのため、次のオプションを検討しています。

  1. ヘルス バー ピクセルの Z / 深度バッファー値をオーバーライドして、レンダラーが後でレンダリングするものよりもカメラに近いと判断するようにします。

    やってみrenderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)ました。レンダラーは、以前に同じ領域に描画したものの上にヘルス バーを描画しますが、後で他の風景がヘルス バーの上に描画されると役に立ちません。

    Java 3D でこれを行うためのより良い方法はありますか?

  2. ヘルスバーの 3D 位置をカメラの前の 2D 平面に投影します。実行可能に思えますが、これに必要なすべての計算を再発明する前に、誰かが既存の解決策を指摘できるかもしれません。

  3. Java 3D から LWJGL や jMonkeyEngine などへの切り替え (この問題だけでなく、Java 3D が機能しないという一般的な不満など)。この特定の問題に対してより柔軟であるかどうかはわかりませんが。私が読んだことによると、ゲーム開発における最悪の間違いの 1 つは、開発の途中でエンジンを切り替えることです。

4

1 に答える 1

3

ペインターのアルゴリズムを使用します。シーンの残りの部分を描画した(もちろん、Z テストをオフにして) 、ヘルス バーを描画します。

于 2010-12-02T22:37:40.377 に答える