События Godot Keyboard

Я изучаю Godot Engine и GDScript, искал в Интернете события клавиатуры, но не понял. Есть ли в Годо что-нибудь вроде: on_key_down("keycode")?


person user193464    schedule 04.09.2017    source источник


Ответы (3)


Вы можете использовать InputEvent для проверки определенных ключей.

Ознакомьтесь с документацией: http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html.

person Blija    schedule 05.09.2017
comment
Есть ли что-нибудь особенное для нажатия клавиши, клавиши вверх и просто клавиши? - person user193464; 06.09.2017

Godot версии 3.0 и выше имеют новые функции ввода-опроса, которые можно использовать в любом месте ваших скриптов:

  • Input.is_action_pressed(action) - проверяет, нажимается ли действие
  • Input.is_action_just_pressed(action) - проверяет, было ли только что нажато действие
  • Input.is_action_just_released(action) - проверяет, было ли действие только что выпущено
person surfboardipod    schedule 21.04.2018

Официальной опции OnKeyUp нет, но вы можете использовать функцию _input(event) для получения ввода при нажатии / отпускании действия:

func _input(event):

    if event.is_action_pressed("my_action"):
        # Your code here
    elif event.is_action_released("my_action):
        # Your code here

Действия задаются в настройках проекта> Входная карта.

Конечно, вы не всегда хотите использовать _input, а скорее получаете входные данные в фиксированных обновлениях. Вы можете использовать Input.is_key_pressed(), но нет is_key_released(). В этом случае вы можете сделать это:

var was_pressed = 0

func _fixed_process(delta):
    if !Input.is_key_pressed() && was_pressed = 1:
        # Your key is NOT pressed but WAS pressed 1 frame before
        # Code to be executed

    # The rest is just checking whether your key is just pressed
    if Input.is_key_pressed():
        was_pressed = 1
    elif !Input.is_key_pressed():
        was_pressed = 0

Вот что я использовал. Не стесняйтесь сообщить мне, есть ли лучший способ сделать OnKeyUp в Годо.

person theducvu    schedule 11.12.2017