这是将触摸坐标与精灵进行比较的正确方法吗?

时间:2014-03-27 21:17:40

标签: android libgdx

我试图让精灵充当按钮,所以当按下精灵时,它会执行动作。这是我的代码

        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
            }
        }

    }

它似乎不起作用。按钮按下确实注册,但在看似随机的地方和时间。有什么更好的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

您在应用中使用相机吗? 然后你可能需要unproject(Vector3 vec)触摸位置到相机和场景的坐标系。这可能会导致您的问题。

无论如何,我强烈建议你使用libgdx提供的scene2d。这样,您就可以创建非常有效的演员和按钮。例如,因为它们支持许多不同的用户操作。

为了给用户提供良好的用户体验,按钮不应该在触摸时做出反应,而是当玩家将手指从按钮上抬起时。此外,用户可以点击按钮,然后滑下它并将手指抬到其他地方,以便中止点击按钮。所以我绝对建议不同地做这件事。

另外,尝试使用基于事件的触摸处理,这样您就不必每次都检查一下......

希望它有帮助...:)

答案 1 :(得分:0)

请参阅此question

基本上,您需要将屏幕触摸位置投影或转换为游戏世界位置