【问题标题】:multiple key pressed doesn't work in Godot按下多个键在 Godot 中不起作用
【发布时间】:2022-01-21 15:29:30
【问题描述】:

在输入映射中尝试了两个键,但即使按下单个键也运行代码

if event.is_action_pressed("ui_up") && event.is_action_pressed("ui_left"): //doesn't work

if event.is_action_pressed("ui_up"): //worked

【问题讨论】:

  • 上面的代码查询event是否是ui_left和ui_up的动作并且被按下。这不会发生,因为这两个动作被分配给不同的键,并将作为单独的事件发送。当您要查询输入的全局状态时,请使用 Input 单例。在这种情况下使用Input.is_action_pressed。

标签: godot


【解决方案1】:

您将在每个输入事件中接到对_input 的呼叫。您在_input 中作为参数获得的event 对象代表该单个输入。

因此,正如 Hola 在 cmets 中正确解释的那样,您不会得到一个报告两个动作都被按下的 event 对象,因为这些动作被设置为不同的键并且将作为单独的事件发送。

如果只关心输入是否为按键,可以查询Input,例如:

if Input.is_action_pressed("ui_up") and Input.is_action_pressed("ui_left"):
    pass

这不一定是_input。 事实上,除非你真的需要,否则我会反对使用_input。你可以在_process 或_physics_process 中进行检查。


现在,有些事情告诉我,您不仅想知道它们是否被按下,您还想知道它们是否“同时”被按下(对于“同时”的一些定义) .

同样,更简单的方法是检查Input:

if Input.is_action_just_pressed("ui_up") and Input.is_action_just_pressed("ui_left"):
    pass

我需要告诉你,is_action_just_pressed 不适合工作 - 并且可能会导致意外结果 - 如果在 _input 中使用。有关说明,请参阅Godot - Input.is_action_just_pressed() runs twice。

如果您需要更多地控制“同时”的含义,或者无论如何您都将在_input 中进行操作,我会将您转至姐妹网站上的旧答案以进行游戏开发:How to make two keys pressed to make an action?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2012-10-18
    相关资源
    最近更新 更多