Godot Keyboard Events
Я изучаю Godot Engine и GDScript, и я искал в интернете информацию о событиях клавиатуры, но я не понял. Есть ли что-то в Годо, как: on_key_down("keycode")
?
7 ответов
Вы можете использовать InputEvent для проверки конкретных ключей.
Ознакомьтесь с документацией: http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
Версии Godot 3.0 и выше имеют новые функции опроса ввода, которые можно использовать в любом месте ваших сценариев:
Input.is_action_pressed(action)
- проверяет, нажимается ли действиеInput.is_action_just_pressed(action)
- проверяет, было ли нажато действиеInput.is_action_released(action)
- проверяет, было ли действие только что выпущено
Там нет официальной опции 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
в Годо.
Нажмите «Настройки проекта» на панели инструментов, перейдите к карте ввода, а затем вы можете назвать действие и добавить к нему любую клавишу, мышь или джойстик. В коде используется:
if Input.is_action_just_pressed('Your action name'):
print('Pressed!')
В godot нет функции _on_key_pressed(). Вместо этого godot сохраняет определенные действия, например, стрельба, ходьба, прыжок, в виде входных карт, которые могут быть привязаны к определенным клавишам (их может быть более одной). Затем для обнаружения действия в коде есть три функции:
- Input.is_action_just_pressed(NameOfAction) — нажатие одной клавиши
- Input.is_action_pressed(NameOfAction) — определяет, удерживается ли клавиша
- Input.is_action_just_pressed(NameOfAction) — определяет, отпущена ли клавиша
Эти функции можно использовать для обнаружения ввода игрока в скрипте.
ПРИМЕЧАНИЕ. В каждом проекте Godot уже хранится множество действий пользовательского интерфейса по умолчанию, например ui_up для стрелки вверх. Если вам нужны пользовательские действия или входные данные, вы можете перейти в «Настройки проекта» -> «Карты ввода», добавить действия и добавить определенную клавишу, щелчок мыши или движение джойстика.
ПРИМЕР ПРОЕКТА:
Открыть новый проект
Перейдите в Настройки проекта -> Входные карты.
В текстовом поле введите «стрелять» и нажмите «ВВОД» или нажмите «ДОБАВИТЬ».
Добавьте пробел к этому действию
Добавить новую сцену со сценарием
В скрипте пишем-
if Input.is_action_pressed("shoot"): #Code for shoot mechanic pass
Существует несколько способов регистрации ключей:
-is_key_pressed("Enter")
-Input.is_action_pressed(*action*)
Я бы использовал Input.is_action_pressed(), потому что он позволяет вам работать с менеджером ввода.
Если вы планируете использовать Input или _Input(событие), важно войти в настройки своего проекта и связать свои ключи.