Итак, я работаю над игрой в Java 3D и реализую столбики здоровья, которые находятся над единицами.
Я начал с того, что нарисовал четырехугольник в 3D-точке над местоположением отряда и применил Billboardчтобы он всегда смотрел в камеру.
Но проблема, с которой я застрял, заключается в том, что полосы здоровья иногда скрываются другими пейзажами.
Поэтому я рассматриваю следующие варианты:
Переопределение значения буфера Z / глубины для пикселей индикатора работоспособности, чтобы заставить рендерер думать, что они ближе к камере, чем все, что визуализируется впоследствии.
Я пыталсяrenderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)
.Хотя он заставляет рендерера рисовать полосу здоровья поверх всего, что он рисовал в той же области ранее, это не помогает, когда другие декорации рисуются поверх полосы здоровья позже.
Есть ли лучшеспособ сделать это в Java 3D?
Проецирование трехмерных местоположений баров здоровья на двухмерную плоскость перед камерой.Звучит выполнимо, но прежде чем я начну заново изобретать все математические средства, необходимые для этого, возможно, кто-то может указать на существующее решение.
Переключение с Java 3D на что-то вроде LWJGL или jMonkeyEngine (не толькодля этой проблемы, но общие жалобы о смерти Java 3D и т. д.).Хотя я даже не уверен, являются ли они более гибкими для этой конкретной проблемы.И из того, что я прочитал, одна из худших ошибок в разработке игр - переключение движка в середине разработки.