Java LibGdx,viewport/camera#unproject有时(不总是)返回错误的值
我使用正交摄影机和取消投影功能将屏幕点转换为世界点 一切正常,但有时#unproject方法返回一些几乎不错/预期的值,但几乎,所以您可以看到屏幕/世界跳跃X像素/单位Java LibGdx,viewport/camera#unproject有时(不总是)返回错误的值,java,android,camera,libgdx,2d,Java,Android,Camera,Libgdx,2d,我使用正交摄影机和取消投影功能将屏幕点转换为世界点 一切正常,但有时#unproject方法返回一些几乎不错/预期的值,但几乎,所以您可以看到屏幕/世界跳跃X像素/单位 //screenX, screenY -> mouse position when wheel is scrolled (...) <- calculate new world size because of zooming and set it up in viewport object //calculate
//screenX, screenY -> mouse position when wheel is scrolled
(...) <- calculate new world size because of zooming and set it up in viewport object
//calculate difference in world two points
//where mouse was before zooming and where mouse is after it,
//related to worldCoords, and apply it to camera:
Vector2 before = viewport.unproject(new Vector2(screenX, screenY));
camera.viewportWidth = viewport.getWorldWidth();
camera.viewportHeight = viewport.getWorldHeight();
camera.update();
Vector2 after = viewport.unproject(new Vector2(screenX, screenY));
camera.position.x -= after.x - before.x;
camera.position.y -= after.y - before.y;
看起来这条线是有罪的:
view.setToLookAt(position, tmp.set(position).add(direction), up);
您可以复制此方法的代码并创建自己的代码,而不需要它。我想这个方法只是一个小问题,很难找到答案。现在,其他人必须更深入,找到setToLookAt内部的真正原因
view.setToLookAt(position, tmp.set(position).add(direction), up);