有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java LibGDX:在特定矩形中添加justTouched()

我使用的代码是:https://github.com/libgdx/libgdx/wiki/A-simple-game

但我想改变雨滴消失的方式。我希望当我触摸它时它消失

所以我补充说:

if (Gdx.input.justTouched()) {
  if (Gdx.input.getX() > raindrop.getX() &&
      Gdx.input.getX() < (raindrop.getX() + raindrop.getWidth()) &&
      Gdx.input.getY() > raindrop.getY() &&
      Gdx.input.getY() < (raindrop.getY() + raindrop.getHeight())) {
     dropSound.play();
     iter.remove();
  }
}

但效果不太好

谢谢


共 (2) 个答案

  1. # 1 楼答案

    您可以做的是获取精灵的边界矩形,并检查鼠标是否在矩形内,以下代码可能会有所帮助

    if (Gdx.input.justTouched()) {
         if (raindrop.getBoundingRectangle().contains(Gdx.input.getX, Gdx.input.getY()) {
            dropSound.play();
            iter.remove();
         }
    }
    
  2. # 2 楼答案

    使用camera.unproject(Vector)将屏幕坐标从点击或触摸转换到游戏世界。这是必要的,因为原点不一定相同,使用相机也可以放大和缩小、四处移动、旋转等等。无投射将解决所有这些问题,并为您提供与指针位置匹配的游戏世界坐标

    if (Gdx.input.justTouched()) {
        Vector3 touchPos = new Vector3();
        touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
        camera.unproject(touchPos);
        if (raindrop.contains(touchPos.x,touchPos.y)) {
            dropSound.play();
            iter.remove();
       }
    }