Comment créer des groupes dans libGdx?

8

L'un d'entre vous peut-il montrer un exemple simple sur la façon d'utiliser les groupes dans libGdx? donc si je déplace le parent, alors tous les enfants se déplaceront avec lui et il en va de même pour la rotation et la mise à l'échelle.

J'ai cherché des tutoriels et des exemples en ligne mais il semble que la dernière version de libGdx ait apporté quelques modifications à la classe Stage.

Je vous remercie

alaslipknot
la source
Utiliser stage2d ou le faire à partir de zéro?
Gustavo Maciel
en utilisant stage2d je suppose: p? c'est la meilleure façon, non?
alaslipknot
Le mieux est subjectif, pour moi, le faire à partir de zéro est meilleur (parce que j'en ai le contrôle), pour d'autres, stage2D peut être meilleur, donc ils n'ont pas à s'en préoccuper trop, ou ils peuvent s'intégrer à d'autres Fonctionnalités de Stage2D.
Gustavo Maciel
Quoi qu'il en soit, je ne sais pas comment le faire avec Stage2D: P
Gustavo Maciel
lol pas de problème j'ai trouvé une solution maintenant ^^ thnx quand même: D
alaslipknot

Réponses:

5

Voici exactement ce dont j'avais besoin, cette classe permet de créer 3 images et de les faire pivoter car elles sont un seul objet, merci à tous pour vos contributions.

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
la source