线性输入
游戏手柄上有一些可以“输入一半”的键,比如摇杆和扳机,这时候就可以使用 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 中的代码会在鼠标移动时执行即可。