如何准确地修复相机适合视口的触摸点?

时间:2016-08-09 12:20:48

标签: libgdx viewport

FitViewport

使用此视口并获取触摸点时,正如您在下面的第1个GIF中所看到的,子弹的方向对触摸点不准确。

fit viewport

StretchViewport

但是使用此视口,触摸点和项目符号方向完全固定且准确。

stretch viewport

2 个答案:

答案 0 :(得分:1)

您需要将屏幕坐标转换为世界空间。 如果您申请触摸位置,此代码将适用于您。

 Vector3 unproject(Vector3 screenCoords,
                     float viewportX,
                     float viewportY,
                     float viewportWidth,
                     float viewportHeight);

你可以像那样使用它

Vector3 touch=camera.unproject( new Vector3( Gdx.input.getX(), Gdx.input.getY() , 0 ) ,viewportX, viewportY, viewportWidth, viewportHeight);
    touch.x // translated touch x
    touch.y // translated touch y

或者您也可以将viewport.unproject()用于视口,它与第一个完全相同。

答案 1 :(得分:0)

如果CameraViewport,请使用视口类方法unproject(),而不是使用相机类。