【问题标题】:Is this the correct way of comparing touch coordinates with a sprite?这是将触摸坐标与精灵进行比较的正确方法吗?
【发布时间】:2014-03-27 21:17:39
【问题描述】:

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

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

    }

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

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

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

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

    为了给您的用户提供良好的用户体验,按钮不应真正在触地时做出反应,而是在玩家将手指从按钮上抬起时做出反应。此外,用户可能会在按钮上单击,然后滑下按钮并在其他地方抬起手指,以中止单击按钮。所以我肯定会建议以不同的方式这样做。

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

    希望对您有所帮助... :)

    【讨论】:

    • 谢谢。我会看看。不过,我实际上并没有在这个菜单屏幕上使用相机。
    • @Wayneio 你应该绝对使用相机,或者如果你使用的是最新的 libgdx 版本,请使用 Viewport。它易于使用并且有很大帮助
    【解决方案2】:

    看到这个question

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

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多