线性输入

游戏手柄上有一些可以“输入一半”的键,比如摇杆和扳机,这时候就可以使用 Input.get_action_strength("动作名称") 来获取一个小数数值,范围是 0 ~ 1,表示按键移动的强度。

例如根据玩家向左移动摇杆的幅度控制移动速度:

var left = Input.get_action_strength("动作名称")
if left > 0:
    position.x -= left * delta * 1000

成对输入

有时候我们会需要成对的输入,例如操控船只的加速和减速,我们可以使用 Input.get_axis("反方向动作","正方向动作") 来获取一个 -1 ~ 1 的值。

或者有些两个轴的输入,例如玩家的上下左右移动,可以使用 Input.get_vector("-x动作","+x动作","-y动作","+y动作") 来获取到一个 Vector2 类型的值,其中的 x 和 y 的范围是 -1 ~ 1。

这两个方法没什么难点,这里就不放示例了,各位亲自体验尝试以下吧。

[!tip]

这些返回小数的输入获取方法,对于键盘或非线性按键的操作会返回 -1、0、1 这种整数值。

鼠标输入

鼠标的按键输入可以直接使用输入映射功能。

如果要获取鼠标的位置,则可以使用 get_global_mouse_position() 获取鼠标在 2D 世界中的坐标。

如果要获取鼠标的移动速度,则需要使用 _input 生命周期方法:

func _input(event):
    if is_instance_of(event,InputEventMouseMotion):
        print(event.velocity)

这样就会输出鼠标的移动速度。

这段代码涉及到一些没学过的东西,暂时先不解释了,暂时只要知道里面的 if 中的代码会在鼠标移动时执行即可。