在我目前制作的游戏中,玩家经常需要同时按下两个按钮,例如"跳跃";以及";左";。目前,我在屏幕左侧有两个按钮用于向左和向右,在右侧有一个用于跳跃。问题是,如果玩家按下其中任何一个按钮,它会有效地锁定其他按钮,使其无法按下。
有没有办法,也许使用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
节点,并且它们启用了多点触摸,因此我可以在移动设备上一次按下多个按钮!