该精灵正在向上移动,我希望在触摸时将其删除。
我能够使用X坐标来检测精灵是否被触摸,但不能使用Y坐标来触摸,当我使用Gdx.input.getY()时,我越往下走Y坐标就越高,基本上它是相反的。

这是X坐标检测的代码:

if ( touched == true && touchX > sprite.getX() &&
     touchX < sprite.getX() + sprite.getWidth() ) {
    enemyIterator.remove();
    Pools.free(sprite);
}

最佳答案

为了使其正确,您应该使用视口或相机的unproject方法将屏幕坐标转换为世界坐标。然后在条件下使用转换后的(未投影的)屏幕坐标。

Vector2 unprojectedTouch = viewport.unproject(new Vector2(touchX, touchY));
//Vector3 unprojectedTouch = camera.unproject(new Vector3(touchX, touchY, 1));

if(touched==true && unprojectedTouch.x > sprite.getX() && unprojectedTouch.x < sprite.getX()+sprite.getWidth()){
      enemyIterator.remove();
      Pools.free(sprite);
}


Viewport的unproject方法与Viewport的unproject方法之间的唯一区别是,Viewport的unproject方法在内部通过将z坐标设置为可选以使其更易于用于2D用法来调用Camera的unproject方法。

参见:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/viewport/Viewport.html#unproject-com.badlogic.gdx.math.Vector2-

10-01 13:53