Frage

Also ich bin auf einem Spiel in Java 3D zu arbeiten und ich bin Umsetzung Gesundheit Bars, dass schwebt über Einheiten.

Ich begann mit einem Quad auf einem 3D-Punkt oberhalb der Einheit Lage zeichnen und ein Billboard Verhaltens ihrer Anwendung immer zu machen, die Kamera gegenüber.

Aber das Problem, das ich mit bin stecken ist, dass die Gesundheit Bars manchmal durch andere Landschaft verdeckt werden.

So Ich betrachte die folgenden Optionen:

  1. Überschreiben des Z / Tiefen Pufferwert für den Health-Bar Pixel des Renderer denken, sie sind näher an die Kamera als alles, was es macht danach.

    Ich habe versucht renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS). Während es der Renderer die Health-Bar oben auf alles, was es zeichnete sich in der Umgebung früher ziehen macht, es hilft nicht, wenn die andere Szenerie später auf dem Gesundheitsbalken gezogen wird.

    Gibt es einen besseren Weg, dies in Java 3D zu tun?

  2. Projizieren der 3D-Positionen der Gesundheitsriegel auf eine 2D-Ebene vor der Kamera. Sounds machbar, aber bevor ich alle die Mathematik dafür erforderlichen neu zu erfinden den Weg, vielleicht kann jemand eine bestehende Lösung hinweisen.

  3. Der Wechsel von Java 3D zu so etwas wie LWJGL oder Jmonkeyengine (nicht nur für dieses Problem, aber allgemeine Beschwerden über Java 3D tot, etc). Obwohl ich bin nicht einmal sicher, ob sie für dieses spezielle Problem flexibler sind. Und von dem, was ich gelesen habe, einer der schlimmsten Fehler in Spiel dev ist der Motor in Mitte Entwicklung umgeschaltet wird.

War es hilfreich?

Lösung

Mit dem des Malers Algorithmus : die Stäbe Gesundheit ziehen nach Sie den Rest der Szene gezeichnet haben (und mit Z-Tests ausgeschaltet, natürlich).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top