为什么Camera.unproject()和Camera.project()在libGdx中没有相互反转?

时间:2016-04-20 04:04:10

标签: libgdx

它甚至写在文档中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。我刚刚写这篇文章可能会为将来的某些人带来一些麻烦,因为我没有在网上任何地方直接指出这一点。

1 个答案:

答案 0 :(得分:0)

项目方法的Javadoc解释了原因。我认为这个假设是,投射一个观点的最常见的原因是与UI进行对比,这也是Y-up。但是当我进行投影时,最有可能将触摸坐标转换为世界坐标。

或者以另一种方式看待它,你在OpenGL中所做的一切都是Y-up所以所有东西都设计为Y-up或者让你在那里。

不是说这必然是最好的方式;只是想猜测思考过程。为您需要的其他类型的项目方法提交PR可能不会有什么坏处,或者您可以继承您正在使用的任何类型的相机并添加其他方法。