如何让 3D 相机并排“跟随”角色位置

问题描述

我正在使用“经典”目标/位置/偏移解决方案来让 3D 相机跟随我的赛车角色。

摄影机在跟随着它,但我相信如果摄影机在它身边(甚至是引导它,向后看),效果会更好。

我尝试调整经典代码,将向量添加到最终的“pos”,甚至只使用目标的原点设置相机的原点,结果没有任何不同。

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

解决方法

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


如果您希望相机避免进入物体内部,您有两个选择:ClippedCameraSpringArm。区别? SpringArm 将允许它与其父级之间存在障碍,而 ClippedCamera 则不允许。

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

或者,使用 SpringArm 节点。将它设置为与您设置相机相同的方式(您想要跟随的子项,相对于它定位),然后使 Camera 成为 SpringArm 的子项。

注意:ClippedCamera 会在它和它的父级之间出现某些东西时导致一些不和谐的跳跃。相反,我建议使用 SpringArm 并为您的空间材质添加接近淡入淡出,因此当它们太靠近相机时它们会淡出,因此它们不会遮挡玩家视图。 您也可能根本不使用 SpringArm,而仅依赖接近淡入淡出。但这是一个游戏决定的游戏。


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