我正在Godot中进行一个程序地形生成的小项目
我需要一个非常基本的相机控制器,它可以飞起来,而不是跳跃。即使是Godot官方Fps教程中的Fps控制器,对我的需求来说也太夸张了。我对Godot和GDScript还很陌生,即使我很熟悉C#,我也不知道如何在Godot中使用它(我更喜欢Godot的GDScript,因为缺少C#的内部编辑器(
有人能帮我吗?感谢
出于测试目的,我的目标是"Simple Free Look Camera";通过adamvilla,你可以在资产库中找到它。下载时,它将为您提供一个camera.gd
脚本,您可以将该脚本附加到场景中的Camera
(将文件从"文件系统"面板拖动到"场景"面板即可(。使Camera
的current
设置为true
。这就是一切。
该脚本模仿了编辑器相机的基本移动,因此您可以右键单击四处查看,WASD可以飞行。Q和E垂直移动。你可以用鼠标滚轮来改变飞行速度。
此外,就像资产库中的所有东西一样,它是免费的(这就是为什么它不是资产store(。它也是开源的。所以你可以打开它并研究代码。而且它是自由的,所以你也可以随意修改上面对控件的描述也应该有助于作为在代码中查找内容的起点
以下是对camera.gd
代码的作用的简短解释
您可以在代码中发现,当您按下鼠标右键时,它使用Input.set_mouse_mode
来捕获鼠标。并且当它获得InputEventMouseMotion
(顺便说一句,这在_input
中(用于稍后使用rotate_y
和rotate_object_local
的组合旋转Camera
时,它将存储relative
运动(该部分在_update_mouselook
中(鼠标水平运动转换为偏航,鼠标垂直运动转换为俯仰,代码也会钳制俯仰
它还会跟踪它感兴趣的键的状态。你可以在脚本顶部找到变量_w
、_s
、_a
、_d
、_q
、_e
,当它得到InputEventKey
时,会在_input
上更新。这些关键点的状态用于计算方向向量(在方向向量上应用速度和加速度(,并最终使用translate
移动Camera
(可以在_update_movement
上找到(请注意,translate
受Camera
方向的影响,因此z
轴是您所看到的位置。
鼠标滚轮输入也在_input
上进行,它更新了_update_movement
中应用的速度倍增器