我做了一个自上而下的游戏,相机将玩家置于屏幕中间。我的代码有效,但我不了解eyeXYZ参数。如果我把一个小于1000000的数字像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);
答案 0 :(得分:1)
前三个参数指定相机(眼睛)的位置。因此,如果你想让你的相机在你的播放器上,那么你应该使用:
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
的影响变得更强,非垂直性变得更明显。