Java 处理:是否有更好的方法使用P3D渲染器制作自顶向下的相机 我做了一个自上而下的游戏,相机把玩家放在屏幕中央。我的代码可以工作,但我不理解eyeXYZ参数。如果我把一个数字放在100000000以下,比如100,游戏将非常容易出错,角度将不再垂直(自上而下)

Java 处理:是否有更好的方法使用P3D渲染器制作自顶向下的相机 我做了一个自上而下的游戏,相机把玩家放在屏幕中央。我的代码可以工作,但我不理解eyeXYZ参数。如果我把一个数字放在100000000以下,比如100,游戏将非常容易出错,角度将不再垂直(自上而下),java,graphics,processing,Java,Graphics,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 ..

有没有更好的方法使相机在处理过程中从自上而下的角度跟随玩家?以下是我所拥有的:

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 ...
... player.x, player.y, player.z ...
cameraHeight
是摄像机与播放器之间的距离。因为您使用的是正交视图,所以该值实际上并不重要。只有适当的深度值才重要(这取决于znear和zfar的值,处理文档对此没有太大帮助)

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

camera(player.x, player.y, player.z + cameraHeight ...
... player.x, player.y, player.z ...
(我不确定这个
+300
应该做什么)

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

... 0.0, 1.0, 0.0);
就这样


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

场景中的哪个轴向上?HUD的z轴向上300偏移。HUD占据了屏幕的一部分。那么这个偏移量也必须出现在眼睛坐标中,以保持垂直。谢谢,现在这很有意义。