¿Cómo crear grupos en libGdx?

8

¿Puede alguno de ustedes demostrar un ejemplo simple sobre cómo usar grupos en libGdx? así que si muevo al padre, todos los niños se moverán con él y lo mismo ocurre con la rotación y el escalado.

Busqué tutoriales y ejemplos en línea, pero parece que la última versión de libGdx hizo algunos cambios en la clase Stage.

Gracias

alaslipknot
fuente
¿Usando stage2d o haciéndolo desde cero?
Gustavo Maciel
usando stage2d, supongo: p? es la mejor manera ¿verdad?
alaslipknot
Lo mejor es subjetivo, para mí, hacerlo desde cero es mejor (porque tengo mucho control de ello), para otros, stage2D puede ser mejor, por lo que no tienen que molestarse demasiado o pueden integrarse con otros Características de Stage2D.
Gustavo Maciel
De todos modos, no sé cómo hacerlo con Stage2D: P
Gustavo Maciel
lol no hay problema, encontré una solución ahora ^^ thnx de todos modos: D
alaslipknot

Respuestas:

5

Esto es exactamente lo que necesitaba tener, esta clase permite crear 3 imágenes y rotarlas ya que son un solo objeto, gracias a todos por sus aportes.

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
fuente