为什么不';t Camera.unproject()和Camera.project()在libGdx中是相反的吗?

为什么不';t Camera.unproject()和Camera.project()在libGdx中是相反的吗?,libgdx,Libgdx,它甚至写在文档中,假设屏幕的原点在左上角,另一方面假设屏幕的原点在左下角。这太烦人了。这是故意的吗?我没有得到什么吗 tmp3.x = selected.pos.x; tmp3.y = selected.pos.y; camera.unproject(tmp3); camera.project(tmp3); 这将翻转向量,并在其中返回相同的向量 编辑: 首先,我尝试使用并将点从一个视口转换到另一个视口(将上下文菜单放置在游戏元素上

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

        tmp3.x = selected.pos.x;
        tmp3.y = selected.pos.y;
        camera.unproject(tmp3);
        camera.project(tmp3);
这将翻转向量,并在其中返回相同的向量

编辑:
首先,我尝试使用并将点从一个视口转换到另一个视口(将上下文菜单放置在游戏元素上)。它们也继承了这种命名混乱,在Javadoc中甚至没有提到


PS.我真的很喜欢libGdx。我写这篇文章也许是为了给将来的人省去一些麻烦,因为我没有在网上找到这篇文章,这是直接指出的。

项目方法的Javadoc解释了原因。我认为这样的假设是,投影一个点的最常见原因是将某个东西与UI对齐,UI也将是Y向上的。但当我投影时,它很可能会将触摸坐标转换为世界坐标

或者从另一个角度来看,你在OpenGL中做的每件事都是Y-up,所以每件事都是为了Y-up而设计的,或者是为了让你达到那个目的


不说这一定是最好的方式;只是想猜测一下思考的过程。如果你需要另一种类型的项目方法,那么提交一份PR可能不会有什么坏处,或者你可以对正在使用的任何类型的相机进行子类化,并添加额外的方法

我想你是对的。我真的很恼火,因为我浪费了几个小时跟踪一个bug,因为我认为我可以安全地假设这两个方法是成对的,这是我最后一次查看的地方。我只是觉得这是一个糟糕的设计选择,不同之处没有反映在命名上。