处理:有没有更好的方法来使用 P3D 渲染器制作自上而下的相机

Processing: Is there a better way to make a top down camera with P3D Renderer

我正在制作一个自上而下的游戏,其中相机将玩家置于屏幕中间。我的代码有效,但我不明白 eyeXYZ 参数。如果我输入一个小于 1000000000 的数字,例如 100,游戏就会出现故障并且角度将不再垂直(自上而下)。

在 Processing 中,有没有更好的方法来制作一个从上到下跟随玩家的相机?这是我拥有的:

camera(0.0, 0.0, 1000000000, player.x+300, player.y, 0.0, 0.0, 1.0, 0.0);
ortho(-width, width, -height, height);

前三个参数指定相机(眼睛)的位置。因此,如果你想让你的相机在你的播放器上方,那么你应该使用:

camera(player.x, player.y, player.z + cameraHeight ...

cameraHeight 是摄像机在玩家上方的距离。由于您使用的是正交视图,因此该值并不重要。它只对适当的深度值很重要(这取决于 znear 和 zfar 的值,Processing 文档对此帮助不大)。

接下来的三个参数是焦点的位置。如果你想专注于播放器,你应该使用:

... player.x, player.y, player.z ...

(我不确定这个 +300 应该做什么)。

最后三个参数是图像中指向上方的方向。 y轴应该没问题。

... 0.0, 1.0, 0.0);

就是这样。

你的眼睛的超大 z 坐标之所以有效,是因为这基本上退化了 +300 偏移量。与 1000000000 相比,300 实际上是零,这就是它看起来垂直的原因。当你减小z坐标时,300的影响越来越大,非垂直性变得更加明显。