Erik_Mironov
@Erik_Mironov
Старые вопросы: *Dies from cringe*

Обработка координат кнопки?

У меня есть некий MenuState, в котором есть несколько кнопок, хочу чтобы обрабатывались координаты в методе handleTouch и запускался экран с игрой, если нажатие произошло по заданным координатам, но код не срабатывает и нажатие в абсолютно любом месте экрана запускает экран с игрой. Что я делаю не так?
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector3;
import com.mygdx.game.MyGdxGame;

public class MenuState extends State {
    private Texture backgroundMenu;
    private Texture playBtn;
    private Texture settingsBtn;
    private Texture exitBtn;
    OrthographicCamera camera;
    Vector3 position = new Vector3();

    public MenuState(GameStateManager gsm) {
        super(gsm);
        float height= Gdx.graphics.getHeight();
        float width = Gdx.graphics.getWidth();
        camera = new OrthographicCamera(width,height);
        camera.setToOrtho(false);

        backgroundMenu = new Texture("backgroundmenu.png");
        playBtn = new Texture("playbtn.png");
        settingsBtn = new Texture("settingsbtn.png");
        exitBtn = new Texture("exitbtn.png");

    }

    @Override
    protected void handleInput() {

    }

    @Override

     public void handleTouch() {

            if(Gdx.input.justTouched()) {
                position.set(Gdx.input.getX(0), Gdx.input.getY(50),0);
                camera.unproject(position);
                gsm.set(new PlayState(gsm));
                }
            }





    @Override
    public void update(float dt) {
        handleTouch();

    }

    @Override
    public void render(SpriteBatch sb) {
        sb.begin();
        sb.draw(backgroundMenu, 0, 0, MyGdxGame.WIDTH, MyGdxGame.HEIGHT);
        sb.draw(playBtn, 0, 50,64, 64);
        sb.draw(settingsBtn, 200, 50,64, 64);
        sb.draw(exitBtn, 400, 50,64, 64);
        sb.setProjectionMatrix(camera.combined);
        sb.end();

    }

    @Override
    public void dispose() {
        backgroundMenu.dispose();
        playBtn.dispose();
        settingsBtn.dispose();
        exitBtn.dispose();

    }
}
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 1
@exenza
Думаю, что нужна проверка на попадание в кнопку (координаты и размеры кнопки известны)
Вообще, в libgdx такие вещи легче делать со Stage
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы