gpt4 book ai didi

libgdx - 为什么在 libGdx 中 Camera.unproject() 和 Camera.project() 不是彼此相反的?

转载 作者:行者123 更新时间:2023-12-02 08:21:57 26 4
gpt4 key购买 nike

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

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

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

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

PS。我真的很喜欢 libGdx。我写这篇文章只是为了让将来的人免去一些麻烦,因为我没有在网络上的任何地方找到直接指出的这一点。

最佳答案

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

或者换个角度来看,你在 OpenGL 中所做的一切都是 Y-up,所以一切都被设计成 Y-up 或者让你到达那里。

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

关于libgdx - 为什么在 libGdx 中 Camera.unproject() 和 Camera.project() 不是彼此相反的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com