Come creare gruppi in libGdx?


8

Qualcuno di voi può dimostrare un semplice esempio su come usare i gruppi in libGdx? quindi se sposto il genitore, tutti i bambini si muoveranno con esso e lo stesso vale per la rotazione e il ridimensionamento.

Ho cercato tutorial ed esempi online, ma sembra che l'ultima versione di libGdx abbia apportato alcune modifiche alla classe Stage.

Grazie


Usi stage2d o lo fai da zero?
Gustavo Maciel,

usando stage2d immagino: p? è il modo migliore giusto?
alaslipknot,

Il meglio è soggettivo, per me, farlo da zero è meglio (perché ne ho molto controllo), per gli altri, stage2D potrebbe essere migliore, quindi non devono preoccuparsi troppo di esso, o possono integrarsi con altri Funzionalità Stage2D.
Gustavo Maciel,

Ad ogni modo, non so come riuscirci con Stage2D: P
Gustavo Maciel,

lol nessun problema ho trovato una soluzione ora ^^ grazie comunque: D
alaslipknot

Risposte:


5

Ecco esattamente quello che dovevo avere, questa classe consente di creare 3 immagini e ruotarle in quanto sono un singolo oggetto, grazie a tutti per i vostri input.

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);
        }
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.