LibGdx Как программировать панель HP?

В настоящее время я пытаюсь запрограммировать игру с помощью LibGdx. У меня много структурной части моей игры, и теперь я пытаюсь вернуть игроку информацию об игре игроку. Самая простая концепция для моего пользовательского интерфейса, о которой я могу думать, - это бары и патроны HP (для пуль, стрелок и т.д.). Будет ли это сделано на сцене и актерами в классе GameScreen? Возможно, в классе Rendering? Или это вторая камера (загруженная после фона)?

Я использую класс GameScreen, поддерживаемый классом Map и MapRenderer, для достижения моего отображения.

Я собираюсь разделить тесты LibGdx. Любая информация, чтобы получить мои ноги с земли, была бы хорошей!

1 ответ

Я использовал этот код некоторое время назад (пока не тестировался). Он использует только два девяти патча, нарисованных друг над другом. Вы можете использовать скин по умолчанию libgdx (uiskin из тестовых ресурсов).

public class HealthBar extends Actor {
 private NinePatchDrawable loadingBarBackground;
 private NinePatchDrawable loadingBar;
 public HealthBar() {
 TextureAtlas skinAtlas = new TextureAtlas(Gdx.files.internal("data/uiskin.atlas"));
 NinePatch loadingBarBackgroundPatch = new NinePatch(skinAtlas.findRegion("default-round"), 5, 5, 4, 4);
 NinePatch loadingBarPatch = new NinePatch(skinAtlas.findRegion("default-round-down"), 5, 5, 4, 4);
 loadingBar = new NinePatchDrawable(loadingBarPatch);
 loadingBarBackground = new NinePatchDrawable(loadingBarBackgroundPatch);
 }
 @Override
 public void draw(Batch batch, float parentAlpha) {
 float progress = 0.4f;
 loadingBarBackground.draw(batch, getX(), getY(), getWidth() * getScaleX(), getHeight() * getScaleY());
 loadingBar.draw(batch, getX(), getY(), progress * getWidth() * getScaleX(), getHeight() * getScaleY());
 }
}

Имейте в виду, что вы должны использовать AssetManager для получения текстуры атласа вместо создания нового Atlas, как это.

licensed under cc by-sa 3.0 with attribution.