我试图让精灵充当按钮,所以当按下精灵时,它会执行动作。这是我的代码
if(Gdx.input.justTouched())
{
int x = Gdx.input.getX();
int y = Gdx.input.getY();
spriteIterator = spriteArray.iterator();
while(spriteIterator.hasNext()){
Sprite cur = spriteIterator.next();
if(cur.getBoundingRectangle().contains(x, y)) {
System.out.println("Pressed button");
//Change to collide message, and pause the game here
}
}
}
它似乎不起作用。按钮按下确实注册,但在看似随机的地方和时间。有什么更好的方法可以解决这个问题?
答案 0 :(得分:0)
您在应用中使用相机吗?
然后你可能需要unproject(Vector3 vec)
触摸位置到相机和场景的坐标系。这可能会导致您的问题。
无论如何,我强烈建议你使用libgdx提供的scene2d。这样,您就可以创建非常有效的演员和按钮。例如,因为它们支持许多不同的用户操作。
为了给用户提供良好的用户体验,按钮不应该在触摸时做出反应,而是当玩家将手指从按钮上抬起时。此外,用户可以点击按钮,然后滑下它并将手指抬到其他地方,以便中止点击按钮。所以我绝对建议不同地做这件事。
另外,尝试使用基于事件的触摸处理,这样您就不必每次都检查一下......
希望它有帮助...:)
答案 1 :(得分:0)
请参阅此question
基本上,您需要将屏幕触摸位置投影或转换为游戏世界位置