3 Stimmen

LibGdx Wie programmiert man eine HP-Leiste?

Ich versuche derzeit, ein Spiel mit LibGdx zu programmieren. Ich habe bereits einen Großteil der Struktur meines Spiels erstellt und bin nun darauf aus, dem Spieler Informationen zurückzugeben. Das einfachste Konzept für meine Benutzeroberfläche, das ich mir vorstellen kann, sind HP-Balken und Munitionszähler (für Kugeln, Pfeile usw.). Würde dies durch eine Bühne und Schauspieler in meiner GameScreen-Klasse erledigt werden? Vielleicht in der Renderklasse? Oder ist dies eine zweite Kamera (die nach dem Hintergrund geladen wird)?

Ich verwende eine GameScreen-Klasse, die von einer Map- und MapRenderer-Klasse unterstützt wird, um meine Anzeige zu realisieren.

Ich werde versuchen, die LibGdx-Tests zu durchforsten. Jede Information, um mich in Gang zu bringen, wäre hilfreich!

6voto

noone Punkte 19177

Ich habe diesen Code vor einiger Zeit verwendet (nicht getestet). Es verwendet einfach zwei Ninepatches, die übereinander gezeichnet sind. Sie können das Standard-Skin von libgdx (uiskin aus den Test-Ressourcen) verwenden.

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());
    }
}

Denken Sie daran, dass Sie einen AssetManager verwenden sollten, um die Atlas-Textur abzurufen, anstatt eine neue Atlas wie hier zu erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X