Wie erstelle ich Gruppen in libGdx?

8

Kann jemand von Ihnen bitte ein einfaches Beispiel für die Verwendung von Gruppen in libGdx demonstrieren? Wenn ich also die Eltern bewege, bewegen sich alle Kinder mit und das Gleiche gilt für Rotation und Skalierung.

Ich habe online nach Tutorials und Beispielen gesucht, aber es scheint, dass die neueste Version von libGdx einige Änderungen an der Stage-Klasse vorgenommen hat.

Vielen Dank

alaslipknot
quelle
Mit Stage2d oder von Grund auf neu?
Gustavo Maciel
mit stage2d denke ich: p? es ist der bessere Weg, oder?
Alaslipknot
Das Beste ist subjektiv, für mich ist es besser, es von Grund auf neu zu machen (weil ich viel Kontrolle darüber habe), für andere ist Stage2D möglicherweise besser, damit sie sich nicht zu sehr damit beschäftigen müssen oder sich in andere integrieren können Stage2D-Funktionen.
Gustavo Maciel
Wie auch immer, ich weiß nicht, wie ich es mit Stage2D machen soll: P
Gustavo Maciel
lol kein Problem, ich habe jetzt eine Lösung gefunden ^^ Danke trotzdem: D
alaslipknot

Antworten:

5

Hier ist genau das, was ich haben musste. Diese Klasse ermöglicht es, 3 Bilder zu erstellen und sie zu drehen, da sie ein einzelnes Objekt sind. Vielen Dank für Ihre Eingaben.

public class LearnGdx extends ApplicationAdapter {

    public static final int WIDTH = 800;
    public static final int HEIGHT = 480;

    private Stage stage;
    private Group group;

    private float rotSpeed = 5;

    @Override
    public void create() {

        // Create a stage
        stage = new Stage(new StretchViewport(WIDTH, HEIGHT));

        // Create a group and add it to the stage.
        group = new Group();
        stage.addActor(group);

        // Create images and add them to the group.
        final Texture region = new Texture(Gdx.files.internal("circle.png"));
        Image img = new Image(region);
        Image img2 = new Image(region);
        Image img3 = new Image(region);

        img2.setColor(new Color(1, 0, 0, 1));
        img3.setColor(new Color(0, 0, 1, 1));

        group.addActor(img2);
        group.addActor(img3);
        group.addActor(img);

        // Images are positioned relative to the group...
        img.setPosition(0, 0);
        img2.setPosition(img.getWidth()/2, 0);
        img3.setPosition(-img.getWidth()/2, 0);

        // Group is positioned relative to the stage...
        group.setPosition(WIDTH / 2 - img.getWidth() / 2,
            HEIGHT / 2 - img.getHeight() / 2);
        group.setOrigin(img.getWidth()/2,img.getHeight()/2);

    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();

        if (Gdx.input.isKeyPressed(Keys.LEFT)) {
            group.rotateBy(rotSpeed);
        }
        if (Gdx.input.isKeyPressed(Keys.RIGHT)) {
            group.rotateBy(-rotSpeed);
        }
    }
}
alaslipknot
quelle