首页 文章

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

提问于
浏览
2

它甚至写在文档中Camera.unproject()假设屏幕左上角有'原点',另一方面Camera.project()假设屏幕的原点在左下角 . 这太烦人了 . 这是故意的吗?我没有得到什么吗?

tmp3.x = selected.pos.x;
        tmp3.y = selected.pos.y;
        camera.unproject(tmp3);
        camera.project(tmp3);

这会翻转向量,它应返回相同的向量 .

EDIT:
首先,我试图使用Viewport.project()Viewport.unproject()将点从一个视口转换为另一个视口(在游戏元素上定位上下文菜单) . 它们也继承了这种命名混淆,甚至在那里的javadoc中都没有提到 .

PS. 我真的很喜欢libGdx . 我直接在网上的任何地方找到这个 .

1 回答

  • 0

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

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

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

相关问题