检测精灵Y坐标

时间:2015-07-09 15:11:42

标签: java libgdx

精灵向上移动,我希望它在被触摸时被删除。 我可以使用1坐标来检测精灵是否被触摸,但是X坐标没有触及精灵,当我使用Y时,Gdx.input.getY()坐标得到Y更高,基本上它被逆转了。

这是X坐标检测的代码:

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

2 个答案:

答案 0 :(得分:2)

要正确使用,您应使用Viewport或相机的 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和Camera的非项目方法之间的唯一区别是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-

答案 1 :(得分:0)

Y倒置了...... 您的Y代码应该如下所示(注意te page.getHeight(), page 屏幕,画布,文档 ...根据需要调用它。)

** UI元素和触摸点**

的Y原点不同
1-4