Как проверить, если фон затронут, а не Actor в libgdx?

У меня есть случайные коробки, появляющиеся на экране снова и снова, когда коробка касается, она меняет положение. Я не уверен, как проверить, касался ли экран, а не коробка. где угодно, кроме коробки.

    private Stage stage;
    private Texture boxImage;
    private Image pop;


@Override
public void show() {
    stage = new Stage();
    Gdx.input.setInputProcessor(stage);
    boxImage = new Texture(Gdx.files.internal("box.png"));
    pop = new Image(boxImage);


    pop.setPosition(20,20);

     pop.addListener(new ClickListener(){
         @Override
        public void clicked(InputEvent event, float x, float y)
         {
                int num1 = (int)MathUtils.random(50,500);
                int num2 = (int)MathUtils.random(50,500);
                pop.setPosition(num1,num2);

         }
     });

    stage.addActor(pop);

}
@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0 , 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act(delta);
    stage.draw();

}

1 ответ

Решение

Как насчет простого добавления ClickListener на вашу сцену?

    stage.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {

            //check if box is hit
            if (pop.equals(stage.hit(x, y, false))) {
                //box hit
            } else {
                //box was not hit
            }

        }
    });
Другие вопросы по тегам