它甚至写在文档中Camera.unproject()
假设屏幕上有它'左上角',另一方面Camera.project()
假设屏幕的起点位于左下角。这太烦人了。这是故意的吗?我没有得到什么吗?
tmp3.x = selected.pos.x;
tmp3.y = selected.pos.y;
camera.unproject(tmp3);
camera.project(tmp3);
这会翻转向量,它应返回相同的向量。
修改
首先,我尝试使用Viewport.project()
和Viewport.unproject()
将点从一个视口转换为另一个视口(将上下文菜单放在游戏元素上)。它们也继承了这种命名混淆,甚至没有提到那里的javadocs。
PS。我非常喜欢libGdx。我刚刚写这篇文章可能会为将来的某些人带来一些麻烦,因为我没有在网上任何地方直接指出这一点。
答案 0 :(得分:0)
项目方法的Javadoc解释了原因。我认为这个假设是,投射一个观点的最常见的原因是与UI进行对比,这也是Y-up。但是当我进行投影时,最有可能将触摸坐标转换为世界坐标。
或者以另一种方式看待它,你在OpenGL中所做的一切都是Y-up所以所有东西都设计为Y-up或者让你在那里。
不是说这必然是最好的方式;只是想猜测思考过程。为您需要的其他类型的项目方法提交PR可能不会有什么坏处,或者您可以继承您正在使用的任何类型的相机并添加其他方法。