Godot 中具有飞行模式的相机控制器

Camera controller with fly mode in Godot

我正在 Godot 中使用程序生成地形进行一个小项目。
我需要一个非常基本的相机控制器,它可以飞而不是跳。即使是 Godot 官方 Fps 教程中的 Fps 控制器也无法满足我的需求。我对 Godot 和 GDScript 很陌生,即使我很了解 C#,我也不知道用它来移动 Godot(我更喜欢 Godot 中的 GDScript,因为缺少 C# 的内部编辑器)。
谁能帮帮我吗?谢谢

出于测试目的,我转到了 adamviola 的“Simple Free-Look Camera”,您可以在资源库中找到它。当您下载它时,它会给您一个 camera.gd 脚本,您可以将其附加到场景中的 Camera(将文件从“文件系统”面板拖到“场景”面板即可)。使currentCamera设置为true。这就是全部。

该脚本模仿了编辑器相机的基本运动,因此您可以按右键单击环顾四周,然后按 WASD 键飞行。 Q 和 E 垂直移动。并且可以使用鼠标滚轮改变飞行速度。

此外,就像资产库中的所有内容一样,它是免费的(这就是为什么它不是资产 store)。它也是开源的。所以你可以打开它并研究代码。而且它是自由的,所以你也可以随意修改。 上面对控件的描述也应该有助于作为在代码中查找内容的起点。


下面是对camera.gd代码的作用的简短解释。

你可以在代码中找到当你按下右键时它使用Input.set_mouse_mode来捕获鼠标。它将在获得 InputEventMouseMotion 时存储 relative 运动(顺便说一句,这是在 _input 中),以便稍后使用 [=21= 的组合旋转 Camera ] 和 rotate_object_local(那部分在 _update_mouselook 中)。 水平鼠标运动转换为偏航,垂直鼠标运动转换为俯仰,代码还限制了俯仰。

它还会跟踪它感兴趣的键的状态。您可以找到变量 _w_s_a_d_q_e 在脚本顶部,并在 _input 获得 InputEventKey 时更新。这些键的状态用于计算方向向量 - 它在其上应用速度和加速度 - 并最终将 Camera 移动到 translate(您可以在 _update_movement 上找到它)。 请注意 translateCamera 方向的影响,因此 z 轴就是您正在查看的位置。

鼠标滚轮输入也在 _input 上进行,它会更新应用于 _update_movement 的速度倍增器。