如何使用Godot同时检测多个移动输入?

问题描述

在我当前正在制作的游戏中,玩家经常需要同时按下两个按钮,例如“ jump”和“ left”。目前,我在屏幕左侧有两个按钮用于左右移动,在右侧有一个按钮用于跳转。问题是,如果玩家按下其中任何一个按钮,它就会有效地锁定其他按钮,使您无法按下它们。

是否有某种方法,也许使用InputEventScreenTouch,我可以每帧检测用户当前的触摸屏输入,并检查他们是否按下了一个或多个按钮?

编辑以获取更多信息: 当前,每个按钮将其button_down()button_up()信号发送到HUD场景根目录中的同一函数,而我有一些简单的函数可以处理该问题:

func setLeft(val):
    # This is the variable that the player
    # checks each frame to see if it should move
    self.get_parent().get_parent().goingLeft = val

因此,当播放器开始按下左键时,它将goingLeft设置为true,而当他们释放时,它将goingLeft设置为false

这应该可以正常工作,但是我发现如果播放器在其他任何地方触摸屏幕,则按钮不会注册输入。例如,如果我按向左按钮,则播放器开始向左移动,然后在按住该按钮的同时,我开始按跳转跳转按钮没有注册,因为我的手指已经按了屏幕上的其他位置(左侧)。

我按下的按钮似乎并不重要,只是Godot仅在有一个输入的情况下才检查按钮。

有什么办法可以解决这个问题?

解决方法

感谢评论中的一些人,我找到了解决方案!

我将按钮类型更改为TouchScreenButton个节点,并且它们启用了多点触摸,因此我可以在移动设备上一次按下多个按钮!