我想触摸屏幕上的特定纹理来开始我的游戏但我的问题是当我触摸它开始游戏的任何地方
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();
}
我非常感谢能帮助解决这个问题。
答案 0 :(得分:1)
使用Sprite
代替Texture
,Sprite保存几何体,颜色和纹理信息,以便使用批量绘制2D精灵。
在show()
或create()
方法
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