0

我正在使用 jPCT 库开发 FPS。所有 FPS 都需要的一件事是通过将鼠标向上/向下拉得太远来防止玩家向后看。目前,我正在使用 jPCT 网站上的一些示例代码来跟踪相机中添加了多少角度,但我担心所有角度都以弧度表示的舍入问题。我可以从 jPCT 的相机中得到一个旋转矩阵,我知道它包含的信息可以计算出玩家看起来有多“高”,但我不知道如何将它从矩阵中取出。

我会在旋转矩阵中寻找什么,它会告诉我玩家是否看起来更“向上”而不是“向上”而不是“向下”而不是向下?

4

1 回答 1

0

如果每次玩家移动时都更新矩阵,那么由于浮点错误,您将遇到麻烦,并且您的旋转矩阵将变成倾斜矩阵。一种解决方案是不时对矩阵进行正交归一化,但通常最好将玩家的俯仰、偏航(如果需要,还可以滚动)保持为浮动,并在玩家改变方向、向上/向下看时从这些角度构建矩阵等等。如果您为每个角度使用优化代码(或将欧拉角转换为矩阵的单一方法),它并不比您现在似乎正在做的慢。您不会遇到云台锁定问题,因为无论如何相机方向都会受到限制。

至于您的具体问题,我认为您需要计算矩阵 Z 轴(第三行或第三列,取决于矩阵的方向)与指向 Z 轴的未旋转向量之间的角度。

于 2012-03-21T18:06:28.890 回答