触摸特定纹理libgdx

时间:2017-08-24 20:28:15

标签: java libgdx

我想触摸屏幕上的特定纹理来开始我的游戏但我的问题是当我触摸它开始游戏的任何地方

  public void handleInput() {
    if(Gdx.input.isTouched()){
        //gsm is a GameStateManger
        gsm.set(new PlayState(gsm));
        dispose();

    Rectangle bounds = new Rectangle((Gdx.graphics.getWidth() / 2)-(playButton.getWidth()/2)+55,Pharaonic.hight/12,480,193); //corners of the image/texture
    Vector3 Point;
    Point=new Vector3(Gdx.input.getX(), Gdx.input.getY(),0);
    Point.set(Gdx.input.getX(), Gdx.input.getY(),0);

    if(bounds.contains(Point.x, Point.y)){
            gsm.set(new PlayState(gsm));
            dispose();
        }}

    }

这是更新方法

@Override
public void update(float dt) {
    handleInput();
}

我非常感谢能帮助解决这个问题。

2 个答案:

答案 0 :(得分:1)

使用Sprite代替Texture,Sprite保存几何体,颜色和纹理信息,以便使用批量绘制2D精灵。

show()create()方法

中初始化playSprite
playSprite=new Sprite(playButton);
playSprite.setSize(200,100);   // set size
playSprite.setPosition(Gdx.graphics.getWidth()/2-playSprite.getWidth()/2,Gdx.graphics.getHeight()/2-playSprite.getHeight()/2);   //set position

渲染Sprite

playSprite.draw(batch);

用精灵边界矩形绑定你的触摸。

@Override
public void handleInput() {

    if (Gdx.input.isTouched()) {
        if (playSprite.getBoundingRectangle().contains(Gdx.input.getX(), Gdx.input.getY())) {
            gsm.set(new PlayState(gsm));
            dispose();
        }
    }
}

修改

@Override
public void handleInput() {

    if (Gdx.input.isTouched()) {
        if (playSprite.getBoundingRectangle().contains(Gdx.input.getX(), Gdx.graphics.getHeight()-Gdx.input.getY())) {
            gsm.set(new PlayState(gsm));
            dispose();
        }
    }
}

答案 1 :(得分:0)

目前,您只是检查是否已按下屏幕。在完成此操作后,您需要检查要触摸的特定区域。

Psi