如何获得 3D 相机 'following' 角色并排位置

How to get a 3D camera 'following' the character position side-by-side

我正在使用 'classic' target/pos/offset 解决方案让 3D 相机跟随我的赛车角色。

摄像头是跟着它走的,但我相信如果摄像头在它旁边(甚至领先它,回头看)效果会更好。

我尝试调整经典代码,将矢量添加到最终 'pos',甚至只是使用目标的原点来设置相机的原点,结果没有什么不同。

这是 engine/object 限制(只能跟随)还是有代码可以将相机保持在目标一侧(或相对于它的任何其他固定位置)?

首先,在 Godot 中让相机跟随 object 的经典方法是简单地使 Camera 节点成为您想要的节点的 child跟随,然后在编辑器中相对于它定位它,不需要代码。如果有的话,我会称之为经典解决方案。


如果您希望相机避免进入 objects,您有两个选择:ClippedCameraSpringArm。区别? SpringArm 会允许它和它的 parent 之间有障碍物,而 ClippedCamera 不会。

要使用 ClippedCamera,请尝试将 Camera 节点更改为 ClippedCamera(并将碰撞器添加到您希望它避免的地方)。我建议将 ClippedCamera 的进程模式设置为 Idle

或者,使用 SpringArm 节点。以与设置相机相同的方式设置它(child 到你想要跟随的位置,相对于它定位),然后使 Camera 成为 SpringArm 的 child .

注意:ClippedCamera 和 parent 之间有东西时,可能会导致一些不和谐的跳跃。相反,我建议使用 SpringArm 并为您的空间材质添加 Proximity fade,这样当它们离相机太近时它们就会淡出,因此它们不会遮挡玩家的视野。 您也可以根本不使用 SpringArm,而仅依赖邻近淡入淡出。但这是一个由游戏决定的游戏。


如果只想跟随位置,不跟随旋转,可以使用RemoteTransform节点。添加 RemoteTransform 作为您要关注的内容的 child,然后对其进行配置(在编辑器的检查面板中)以将位置推送到另一个节点。而且,当然,该节点是 Camera.