该精灵正在向上移动,我希望在触摸时将其删除。
我能够使用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-