获取输入
Godot 给我们预先写好了很多类,这其中有一个 Input
类专门用于获取玩家的输入信息。
先来介绍一个最简单的方法,is_key_pressed
,它可以判断一个按键是否被按住,例如实现一个按 w 键向上移动:
func _physics_process(delta):
if Input.is_key_pressed(KEY_W):
position.y -= 1000 * delta
因为涉及到移动,所以我们把这段代码放到了 _physics_process
生命周期方法中。
根据 is_key_pressed
这个名字可以看出来,他是判断按键是否被按下的,也就是说这个方法的返回值是布尔类型,当按键被按下时返回 true,没按下时返回 false。它的参数是一个 KeyCode 类型的枚举,什么是枚举可以先不用考虑,总之这个参数应该是你想检测的按键,而 Godot 定义了一堆 KEY_???
这样的变量来表示每一个按键,上面代码中使用的 KEY_W
就表示了键盘上的 W 键。
is_key_pressed
结合 if
语句,就实现了当玩家按下某个键时执行一段代码这样的逻辑,这里当按下 W 时就会执行向上移动,也就是 position.y -= 1000 * delta
。
输入映射
大部分游戏都支持多种输入方式,例如一般的主机游戏都支持键鼠和手柄,虽然我们可以使用 or 运算同时判断多个按键输入,但这必定会很麻烦。
现在的绝大多数游戏都会有一个这样的界面:
在这种地方,游戏定义了例如移动、跳跃等动作。在代码中直接判断玩家是否进行了某种动作即可,Godot 也为我们提供了一个这样的东西。
打开引擎主界面菜单中的项目
-> 项目设置
-> 输入映射
选项卡,即可看到类似上图的界面,我们可以在这里添加咱们的按键映射,例如:
在代码中,我们可以使用 Input.is_action_pressed("动作名称")
来获取某个动作对应的按键是否被按下,例如我们要检测上图中的 Fire 动作:
if Input.is_action_pressed("Fire"):
print("按下了 Fire 键!")