Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Input
Наследует: Object
Синглтон для обработки входных данных.
Описание
Синглтон Input обрабатывает нажатия клавиш, кнопки мыши и движение, геймпады и действия ввода. Действия и их события можно задать на вкладке Input Map в Project > Project Settings или с помощью класса InputMap.
Примечание: Методы Input отражают глобальное состояние ввода и не зависят от Control.accept_event() или Viewport.set_input_as_handled(), поскольку эти методы имеют дело только со способом распространения ввода в SceneTree.
Обучающие материалы
Свойства
Методы
Сигналы
joy_connection_changed(device: int, connected: bool) 🔗
Издается при подключении или отключении джойстика.
Перечисления
enum MouseMode: 🔗
MouseMode MOUSE_MODE_VISIBLE = 0
Делает курсор мыши видимым, если он скрыт.
Делает курсор мыши скрытым, если он виден.
MouseMode MOUSE_MODE_CAPTURED = 2
Захватывает мышь. Мышь будет скрыта, а ее положение зафиксировано в центре окна менеджера окон.
Примечание: Если вы хотите обрабатывать движение мыши в этом режиме, вам нужно использовать InputEventMouseMotion.relative.
MouseMode MOUSE_MODE_CONFINED = 3
Ограничивает курсор мыши окном игры и делает его видимым.
Ограничивает курсор мыши окном игры и делает его скрытым.
MouseMode MOUSE_MODE_MAX = 5
Максимальное значение MouseMode.
enum CursorShape: 🔗
CursorShape CURSOR_ARROW = 0
Курсор-стрелка. Стандартный, указывающий курсор по умолчанию.
CursorShape CURSOR_IBEAM = 1
Курсор в виде I-образной линии. Обычно используется для указания того, где появится текстовый курсор при щелчке мыши.
CursorShape CURSOR_POINTING_HAND = 2
Курсор в виде указывающей руки. Обычно используется для обозначения того, что указатель находится над ссылкой или другим интерактивным элементом.
CursorShape CURSOR_CROSS = 3
Перекрестный курсор. Обычно появляется над областями, в которых можно выполнить операцию рисования или для выделения.
CursorShape CURSOR_WAIT = 4
Курсор ожидания. Указывает, что приложение занято выполнением операции и что оно не может быть использовано во время операции (например, что-то блокирует его основной поток).
CursorShape CURSOR_BUSY = 5
Занятый курсор. Указывает, что приложение занято выполнением операции и что оно все еще может использоваться во время операции.
CursorShape CURSOR_DRAG = 6
Курсор перетаскивания. Обычно отображается при перетаскивании чего-либо.
Примечание: В Windows отсутствует курсор перетаскивания, поэтому CURSOR_DRAG совпадает с CURSOR_MOVE для этой платформы.
CursorShape CURSOR_CAN_DROP = 7
Можно отпустить курсор. Обычно отображается при перетаскивании чего-либо, чтобы указать, что его можно отпустить в текущей позиции.
CursorShape CURSOR_FORBIDDEN = 8
Запрещенный курсор. Указывает, что текущее действие запрещено (например, при перетаскивании чего-либо) или что элемент управления в позиции отключен.
CursorShape CURSOR_VSIZE = 9
Вертикальное изменение размера курсора мыши. Двунаправленная вертикальная стрелка. Сообщает пользователю, что он может изменять размер окна или панели по вертикали.
CursorShape CURSOR_HSIZE = 10
Курсор мыши для изменения размера по горизонтали. Двунаправленная горизонтальная стрелка. Сообщает пользователю, что он может изменять размер окна или панели по горизонтали.
CursorShape CURSOR_BDIAGSIZE = 11
Курсор мыши для изменения размера окна. Курсор представляет собой двунаправленную стрелку, которая идет из нижнего левого угла в верхний правый угол. Он сообщает пользователю, что он может изменять размер окна или панели как по горизонтали, так и по вертикали.
CursorShape CURSOR_FDIAGSIZE = 12
Курсор мыши для изменения размера окна. Курсор — это двунаправленная стрелка, которая идет из верхнего левого угла в нижний правый угол, противоположность CURSOR_BDIAGSIZE. Он сообщает пользователю, что он может изменять размер окна или панели как по горизонтали, так и по вертикали.
CursorShape CURSOR_MOVE = 13
Переместить курсор. Указывает, что что-то можно переместить.
CursorShape CURSOR_VSPLIT = 14
Вертикальный разделенный курсор мыши. В Windows это то же самое, что CURSOR_VSIZE.
CursorShape CURSOR_HSPLIT = 15
Горизонтальный разделенный курсор мыши. В Windows это то же самое, что CURSOR_HSIZE.
CursorShape CURSOR_HELP = 16
Курсор помощи. Обычно вопросительный знак.
Описания свойств
bool emulate_mouse_from_touch 🔗
Если true, отправляет события ввода мыши при нажатии или пролистывании на сенсорном экране. См. также ProjectSettings.input_devices/pointing/emulate_mouse_from_touch.
bool emulate_touch_from_mouse 🔗
Если true, отправляет события сенсорного ввода при щелчке или перетаскивании мыши. См. также ProjectSettings.input_devices/pointing/emulate_touch_from_mouse.
bool ignore_joypad_on_unfocused_application 🔗
void set_ignore_joypad_on_unfocused_application(value: bool)
bool is_ignoring_joypad_on_unfocused_application()
Если true, ввод с геймпада (включая датчики движения) и изменения светодиодной индикации будут игнорироваться, а вибрация геймпада будет прекращена, когда приложение не находится в фокусе.
Управляет режимом мыши.
Если true, накапливаются похожие события ввода, отправленные операционной системой. Когда накопление ввода включено, все события ввода, сгенерированные во время кадра, будут объединены и отправлены, когда кадр завершит рендеринг. Таким образом, это ограничивает количество вызовов методов ввода в секунду до FPS рендеринга.
Накопление ввода можно отключить, чтобы получить немного более точный/реактивный ввод за счет увеличения загрузки ЦП. В приложениях, где требуется рисовать линии от руки, накопление ввода обычно следует отключать, пока пользователь рисует линию, чтобы получить результаты, которые точно соответствуют фактическому вводу.
Примечание: Накопление ввода включено по умолчанию.
Описания метода
void action_press(action: StringName, strength: float = 1.0) 🔗
Это сымитирует нажатие указанного действия.
Силу можно использовать для небулевых действий, она находится в диапазоне от 0 до 1, представляя интенсивность данного действия.
Примечание: Этот метод не вызовет никаких вызовов Node._input(). Он предназначен для использования с is_action_pressed() и is_action_just_pressed(). Если вы хотите симулировать _input, используйте вместо этого parse_input_event().
void action_release(action: StringName) 🔗
Если указанное действие уже нажато, это отменит его.
void add_joy_mapping(mapping: String, update_existing: bool = false) 🔗
Добавляет новую запись сопоставления (в формате SDL2) в базу данных сопоставления. При желании можно обновить уже подключенные устройства.
void clear_joy_motion_sensors_calibration(device: int) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Очищает информацию о калибровке датчиков движения указанного геймпада, если таковые имеются и были ли они откалиброваны.
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки геймпада в играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
void flush_buffered_events() 🔗
Отправляет все события ввода, которые находятся в текущем буфере, в игровой цикл. Эти события могли быть буферизованы в результате накопленного ввода (use_accumulated_input) или гибкой очистки ввода (ProjectSettings.input_devices/buffering/agile_event_flushing).
Движок уже сделает это сам в ключевых точках выполнения (по крайней мере один раз за кадр). Однако это может быть полезно в сложных случаях, когда вам нужен точный контроль над временем обработки событий.
Vector3 get_accelerometer() const 🔗
Возвращает ускорение в м/с² акселерометрического датчика устройства, если он есть. В противном случае метод возвращает Vector3.ZERO.
Обратите внимание, что этот метод возвращает пустой Vector3 при запуске из редактора, даже если на вашем устройстве есть акселерометр. Вам необходимо экспортировать свой проект на поддерживаемое устройство, чтобы считать значения с акселерометра.
Примечание: Этот метод работает только на Android и iOS. На других платформах он всегда возвращает Vector3.ZERO.
Примечание: Для Android необходимо включить ProjectSettings.input_devices/sensors/enable_accelerometer.
float get_action_raw_strength(action: StringName, exact_match: bool = false) const 🔗
Возвращает значение от 0 до 1, представляющее собой необработанную интенсивность данного действия, игнорируя мертвую зону действия. В большинстве случаев вместо этого следует использовать get_action_strength().
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
float get_action_strength(action: StringName, exact_match: bool = false) const 🔗
Возвращает значение от 0 до 1, представляющее интенсивность данного действия. Например, в джойстике, чем дальше ось (аналоговые джойстики или триггеры L2, R2) от мертвой зоны, тем ближе значение будет к 1. Если действие сопоставлено с элементом управления, не имеющим оси, например клавиатурой, возвращаемое значение будет равно 0 или 1.
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
float get_axis(negative_action: StringName, positive_action: StringName) const 🔗
Получите входные данные оси, указав два действия, одно отрицательное и одно положительное.
Это сокращение для записи Input.get_action_strength("positive_action") - Input.get_action_strength("negative_action").
Array[int] get_connected_joypads() 🔗
Возвращает массив, содержащий идентификаторы всех подключенных в данный момент джойстиков.
Примечание: Порядок подключенных джойстиков не может быть гарантированно сохранен после перезапуска проекта и/или редактора, поскольку Godot не сохраняет порядок подключения джойстиков. Джойстики регистрируются в том порядке, в котором они были обнаружены Godot.
CursorShape get_current_cursor_shape() const 🔗
Возвращает текущую назначенную форму курсора.
Возвращает силу тяжести (gravity) в м/с² акселерометрического датчика устройства, если он есть. В противном случае метод возвращает Vector3.ZERO.
Примечание: Этот метод работает только на Android и iOS. На других платформах он всегда возвращает Vector3.ZERO.
Примечание: Для Android необходимо включить ProjectSettings.input_devices/sensors/enable_gravity.
Vector3 get_gyroscope() const 🔗
Возвращает скорость вращения в рад/с вокруг осей X, Y и Z устройства датчика гироскопа, если устройство имеет таковой. В противном случае метод возвращает Vector3.ZERO.
Примечание: Этот метод работает только на Android и iOS. На других платформах он всегда возвращает Vector3.ZERO.
Примечание: Для Android ProjectSettings.input_devices/sensors/enable_gyroscope должен быть включен.
Vector3 get_joy_accelerometer(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает ускорение, включая силу тяжести, в м/с², измеренное акселерометром джойстика, если джойстик имеет такой датчик и он в данный момент включен. В противном случае метод возвращает Vector3.ZERO. См. также get_joy_gravity() и set_joy_motion_sensors_enabled().
Для джойстика, удерживаемого перед вами, возвращаемые оси определяются следующим образом:
+X ... -X: влево ... вправо;
+Y ... -Y: вниз ... вверх;
+Z ... -Z: дальше ... ближе.
Значение гравитации измеряется как вектор длиной 9.8 от центра Земли, что соответствует отрицательному значению Y.
Примечание: Эта функция поддерживается только в Windows, Linux и macOS. На iOS считывание данных с акселерометра джойстика не поддерживается из-за ограничений ОС.
float get_joy_axis(device: int, axis: JoyAxis) const 🔗
Возвращает текущее значение оси джойстика по индексу axis.
Vector3 get_joy_gravity(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает значение силы тяжести в м/с², полученное с помощью акселерометра джойстика, если джойстик им оснащен и в данный момент включен. В противном случае метод возвращает Vector3.ZERO. См. также get_joy_accelerometer() и set_joy_motion_sensors_enabled().
Для джойстика, удерживаемого перед вами, возвращаемые оси определяются следующим образом:
+X ... -X: влево ... вправо;
+Y ... -Y: вниз ... вверх;
+Z ... -Z: дальше ... ближе.
Значение силы тяжести измеряется как вектор длиной 9.8 от центра Земли, что соответствует отрицательному значению Y.
Примечание: Эта функция поддерживается только в Windows, Linux и macOS. На iOS считывание данных с акселерометра джойстика не поддерживается из-за ограничений ОС.
String get_joy_guid(device: int) const 🔗
Возвращает GUID устройства, совместимого с SDL, на платформах, использующих переназначение кнопок геймпада, например, 030000004c050000c405000000010000. Возвращает пустую строку, если устройство не найдено. Godot использует внутренние сопоставления SDL, дополненные сопоставлениями, предоставленными сообществом, для определения имен и сопоставлений геймпадов на основе этого GUID.
В Windows все GUID геймпадов XInput будут переопределены Godot на __XINPUT_DEVICE__, поскольку их сопоставления одинаковы.
Vector3 get_joy_gyroscope(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает скорость вращения в рад/с вокруг осей X, Y и Z датчика гироскопа джойстика, если джойстик имеет датчик и он в данный момент включен. В противном случае метод возвращает Vector3.ZERO. См. метод set_joy_motion_sensors_enabled().
Вращение положительное и направлено против часовой стрелки.
Для джойстика, удерживаемого перед вами, возвращаемые оси определяются следующим образом:
X: Угловая скорость вокруг оси X (тангаж);
Y: Угловая скорость вокруг оси Y (рыскание);
Z: Угловая скорость вокруг оси Z (крен).
См. start_joy_motion_sensors_calibration() для примера использования гироскопа джойстика и калибровки гироскопа в ваших играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
Dictionary get_joy_info(device: int) const 🔗
Возвращает словарь с дополнительной информацией об устройстве, специфичной для платформы, например, исходное имя геймпада из ОС или индекс Steam Input.
В Windows, Linux, macOS и iOS словарь содержит следующие поля:
raw_name: имя контроллера, как оно было получено из ОС до переименования в базе данных контроллеров.
vendor_id: идентификатор производителя USB-устройства.
product_id: идентификатор продукта USB-устройства.
serial_number: серийный номер устройства. Этот ключ будет отсутствовать, если серийный номер недоступен.
Словарь также может включать следующие поля для выбранных платформ:
steam_input_index: индекс геймпада Steam Input (только для Windows, Linux и macOS). Если устройство не является устройством Steam Input, этот ключ будет отсутствовать.
xinput_index: Индекс контроллера в системе XInput (только для Windows). Этот ключ будет отсутствовать для устройств, не обрабатываемых XInput.
Примечание: Возвращаемый словарь всегда пуст на Android и в веб-версии.
Dictionary get_joy_motion_sensors_calibration(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает информацию о калибровке датчиков движения указанного джойстика в виде Dictionary, если таковые имеются и если они были откалиброваны; в противном случае возвращает пустой Dictionary.
Словарь содержит следующие поля:
gyroscope_offset: среднее смещение значений гироскопа относительно Vector2.ZERO в рад/с.
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки джойстика в ваших играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
float get_joy_motion_sensors_rate(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает частоту срабатывания датчика движения геймпада в Гц, если геймпад оснащен датчиками движения и они в данный момент включены. См. также set_joy_motion_sensors_enabled().
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
String get_joy_name(device: int) 🔗
Возвращает имя джойстика по указанному индексу устройства, например, PS4 Controller. Godot использует Базу данных игровых контроллеров SDL2 для определения имен геймпадов.
float get_joy_vibration_duration(device: int) 🔗
Возвращает длительность текущего эффекта вибрации в секундах.
Примечание: Этот метод возвращает то же значение, которое было передано в start_joy_vibration(), и это значение не изменяется после окончания вибрации джойстика, оно сбрасывается только после вызова stop_joy_vibration().
Если вы хотите проверить, продолжает ли вибрировать джойстик, используйте вместо этого is_joy_vibrating().
float get_joy_vibration_remaining_duration(device: int) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает оставшуюся продолжительность текущего вибрационного эффекта в секундах.
Vector2 get_joy_vibration_strength(device: int) 🔗
Возвращает силу вибрации джойстика: x — сила слабого двигателя, а y — сила сильного двигателя.
Примечание: Этот метод возвращает те же значения, которые были переданы в start_joy_vibration(), и эти значения не изменяются, когда вибрация джойстика заканчивается, они сбрасываются только после вызова stop_joy_vibration().
Если вы хотите проверить, продолжает ли вибрировать джойстик, используйте вместо этого is_joy_vibrating().
Vector2 get_last_mouse_screen_velocity() 🔗
Возвращает последнюю скорость мыши в координатах экрана. Чтобы обеспечить точную и свободную от дрожания скорость, скорость мыши вычисляется только каждые 0,1 с. Поэтому скорость мыши будет отставать от движений мыши.
Vector2 get_last_mouse_velocity() 🔗
Возвращает последнюю скорость мыши. Чтобы обеспечить точную и свободную от дрожания скорость, скорость мыши вычисляется только каждые 0,1 с. Поэтому скорость мыши будет отставать от движений мыши.
Vector3 get_magnetometer() const 🔗
Возвращает напряженность магнитного поля в микротеслах для всех осей датчика магнитометра устройства, если он есть. В противном случае метод возвращает Vector3.ZERO.
Примечание: Этот метод работает только на Android и iOS. На других платформах он всегда возвращает Vector3.ZERO.
Примечание: Для Android необходимо включить ProjectSettings.input_devices/sensors/enable_magnetometer.
BitField[MouseButtonMask] get_mouse_button_mask() const 🔗
Возвращает кнопки мыши как битовую маску. Если одновременно нажато несколько кнопок мыши, биты суммируются. Эквивалентно DisplayServer.mouse_get_button_state().
Vector2 get_vector(negative_x: StringName, positive_x: StringName, negative_y: StringName, positive_y: StringName, deadzone: float = -1.0) const 🔗
Получает входной вектор, указывая четыре действия для положительных и отрицательных осей X и Y.
Этот метод полезен при получении векторного ввода, например, с джойстика, навигационной панели, стрелок или WASD. Длина вектора ограничена 1, и он имеет круговую мертвую зону, что полезно для использования векторного ввода в качестве движения.
По умолчанию мертвая зона автоматически рассчитывается из среднего значения мертвых зон действий. Однако вы можете переопределить мертвую зону, чтобы она была любой, которую вы хотите (в диапазоне от 0 до 1).
bool has_joy_light(device: int) const 🔗
Возвращает true, если геймпад имеет светодиодную подсветку, которая может менять цвет и/или яркость. См. также set_joy_light().
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
bool has_joy_motion_sensors(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает true, если геймпад оснащен датчиками движения (акселерометром и гироскопом).
Примечание: На iOS считывание данных с акселерометра геймпада не поддерживается из-за ограничений операционной системы.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
bool has_joy_vibration(device: int) const 🔗
Возвращает true, если геймпад поддерживает вибрацию. См. также start_joy_vibration().
Примечание: Для macOS вибрация поддерживается только в macOS 11 и более поздних версиях. При подключении через USB вибрация поддерживается только для контроллеров основных производителей (кроме контроллеров Xbox One и Xbox Series X/S) из-за ограничений macOS.
bool is_action_just_pressed(action: StringName, exact_match: bool = false) const 🔗
Возвращает true, когда пользователь начал нажатие кнопки действия в текущем кадре или тике физики. Возвращает true только в том кадре или тике, когда пользователь нажал кнопку.
Это полезно для кода, который должен выполняться только один раз при нажатии кнопки действия, а не каждый кадр, пока она нажата.
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
Примечание: Возврат true не означает, что действие всё ещё нажато. Действие можно быстро нажать и отпустить, и true всё равно будет возвращён, чтобы не пропустить ввод.
Примечание: Из-за эффекта фантомного нажатия клавиатуры, is_action_just_pressed() может возвращать false, даже если нажата одна из клавиш действия. Подробнее см. в разделе Примеры ввода в документации.
Примечание: При обработке ввода (например, Node._input()) используйте InputEvent.is_action_pressed() для запроса состояния действия текущего события. См. также is_action_just_pressed_by_event().
bool is_action_just_pressed_by_event(action: StringName, event: InputEvent, exact_match: bool = false) const 🔗
Возвращает true, когда пользователь начал нажатие кнопки действия в текущем кадре или такте физики, и первым событием, вызвавшим нажатие кнопки действия в текущем кадре/такте физики, было event. Возвращает true только в том кадре или такте, когда пользователь нажал кнопку.
Это полезно для кода, который должен выполняться только один раз при нажатии кнопки действия, и действие обрабатывается во время обработки ввода (например, Node._input()).
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
Примечание: Возврат true не означает, что действие всё ещё нажато. Действие можно быстро нажать и отпустить, и при этом true всё равно будет возвращён, чтобы не пропустить ввод.
Примечание: Из-за эффекта фантомного нажатия клавиатуры is_action_just_pressed() может возвращать false, даже если нажата одна из клавиш действия. Подробнее см. Примеры ввода в документации.
bool is_action_just_released(action: StringName, exact_match: bool = false) const 🔗
Возвращает true, когда пользователь прекращает нажатие на событие действия в текущем кадре или такте физики. Возвращает true только в том кадре или такте, когда пользователь отпускает кнопку.
Примечание: Возвращение true не означает, что действие ещё не нажато. Действие можно быстро отпустить и снова нажать, и true всё равно будет возвращено, чтобы не пропустить ввод.
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
Примечание: Во время обработки входных данных (например, Node._input()) используйте InputEvent.is_action_released() для запроса состояния действия текущего события. См. также is_action_just_released_by_event().
bool is_action_just_released_by_event(action: StringName, event: InputEvent, exact_match: bool = false) const 🔗
Возвращает true, когда пользователь прекращает нажатие кнопки действия в текущем кадре или такте физики, и первым событием, вызвавшим отпускание кнопки в текущем кадре/такте физики, было event. Возвращает true только в том кадре или такте, когда пользователь отпускает кнопку.
Это полезно, когда действие обрабатывается во время обработки ввода (например, Node._input()).
Примечание: Возврат true не означает, что действие ещё не нажато. Действие можно быстро отпустить и снова нажать, и true всё равно будет возвращён, чтобы не пропустить ввод.
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
bool is_action_pressed(action: StringName, exact_match: bool = false) const 🔗
Возвращает true, если вы нажимаете событие действия.
Если exact_match равен false, он игнорирует дополнительные модификаторы ввода для событий InputEventKey и InputEventMouseButton, а также направление для событий InputEventJoypadMotion.
Примечание: Из-за эффекта фантомного нажатия клавиатуры is_action_pressed() может возвращать false, даже если нажата одна из клавиш действия. Для получения дополнительной информации см. Примеры ввода в документации.
bool is_anything_pressed() const 🔗
Возвращает true, если нажато какое-либо действие, клавиша, кнопка джойстика или кнопка мыши. Это также вернет true, если какое-либо действие имитируется через код путем вызова action_press().
bool is_joy_button_pressed(device: int, button: JoyButton) const 🔗
Возвращает true, если вы нажимаете кнопку джойстика по индексу button.
Примечание: Если вы хотите проверить, была ли только что нажата кнопка джойстика, используйте систему действий ввода Godot с помощью is_action_just_pressed() или используйте метод Node._input() следующим образом:
func _input(event):
if event is InputEventJoypadButton and event.is_pressed() and event.button_index == JOY_BUTTON_A:
pass # Ваш код здесь.
public override void _Input(InputEvent @event)
{
if (@event is InputEventJoypadButton eventButton && eventButton.Pressed && eventButton.ButtonIndex == JoyButton.A)
{
// Ваш код здесь.
}
}
bool is_joy_known(device: int) 🔗
Возвращает true, если система знает указанное устройство. Это означает, что она устанавливает все индексы кнопок и осей. Неизвестные джойстики не должны соответствовать этим константам, но вы все равно можете извлекать из них события.
bool is_joy_motion_sensors_calibrated(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает true, если датчики движения геймпада откалиброваны.
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки геймпада в играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
bool is_joy_motion_sensors_calibrating(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает true, если датчики движения геймпада в данный момент калибруются.
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки геймпада в ваших играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
bool is_joy_motion_sensors_enabled(device: int) const 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает true, если запрошенный геймпад имеет датчики движения (акселерометр и гироскоп) и они в данный момент включены. См. также set_joy_motion_sensors_enabled() и has_joy_motion_sensors().
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки геймпада в ваших играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
bool is_joy_vibrating(device: int) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Возвращает true, если джойстик продолжает вибрировать после вызова start_joy_vibration().
В отличие от get_joy_vibration_strength() и get_joy_vibration_duration(), этот метод возвращает false после того, как вибрация джойстика прекращается.
bool is_key_label_pressed(keycode: Key) const 🔗
Возвращает true, если вы нажимаете клавишу с напечатанным на ней keycode. Вы можете передать константу Key или любой код символа Unicode.
Примечание: Если вы хотите проверить, была ли только что нажата клавиша, используя её метку, используйте систему действий ввода Godot с помощью is_action_just_pressed() или используйте метод Node._input() следующим образом:
func _input(event):
if event is InputEventKey and not event.is_echo() and event.is_pressed() and event.key_label == KEY_SPACE:
pass # Ваш код здесь.
public override void _Input(InputEvent @event)
{
if (@event is InputEventKey eventKey && !eventKey.IsEcho() && eventKey.Pressed && eventKey.KeyLabel == Key.Space)
{
// Ваш код здесь.
}
}
bool is_key_pressed(keycode: Key) const 🔗
Returns true if you are pressing the Latin key in the current keyboard layout. You can pass a Key constant.
is_key_pressed() is only recommended over is_physical_key_pressed() in non-game applications. This ensures that shortcut keys behave as expected depending on the user's keyboard layout, as keyboard shortcuts are generally dependent on the keyboard layout in non-game applications. If in doubt, use is_physical_key_pressed().
Note: Due to keyboard ghosting, is_key_pressed() may return false even if one of the action's keys is pressed. See Input examples in the documentation for more information.
Note: If you want to check if a key was just pressed by using its keycode, use Godot's input action system with is_action_just_pressed() or use the Node._input() method like this instead:
func _input(event):
if event is InputEventKey and not event.is_echo() and event.is_pressed() and event.keycode == KEY_SPACE:
pass # Your code here.
public override void _Input(InputEvent @event)
{
if (@event is InputEventKey eventKey && !eventKey.IsEcho() && eventKey.Pressed && eventKey.Keycode == Key.Space)
{
// Your code here.
}
}
bool is_mouse_button_pressed(button: MouseButton) const 🔗
Возвращает true, если вы нажимаете кнопку мыши, указанную в MouseButton.
Примечание: Если вы хотите проверить, была ли только что нажата кнопка мыши, используйте систему действий ввода Godot с помощью is_action_just_pressed() или используйте метод Node._input() следующим образом:
func _input(event):
if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT:
pass # Здесь ваш код.
public override void _Input(InputEvent @event)
{
if (@event is InputEventMouseButton eventMouseButton && eventMouseButton.Pressed && eventMouseButton.ButtonIndex == MouseButton.Left)
{
// Здесь ваш код.
}
}
bool is_physical_key_pressed(keycode: Key) const 🔗
Returns true if you are pressing the key in the physical location on the 101/102-key US QWERTY keyboard. You can pass a Key constant.
is_physical_key_pressed() is recommended over is_key_pressed() for in-game actions, as it will make W/A/S/D layouts work regardless of the user's keyboard layout. is_physical_key_pressed() will also ensure that the top row number keys work on any keyboard layout. If in doubt, use is_physical_key_pressed().
Note: Due to keyboard ghosting, is_physical_key_pressed() may return false even if one of the action's keys is pressed. See Input examples in the documentation for more information.
Note: If you want to check if a key was just pressed by using its physical keycode, use Godot's input action system with is_action_just_pressed() or use the Node._input() method like this instead:
func _input(event):
if event is InputEventKey and not event.is_echo() and event.is_pressed() and event.physical_keycode == KEY_SPACE:
pass # Your code here.
public override void _Input(InputEvent @event)
{
if (@event is InputEventKey eventKey && !eventKey.IsEcho() && eventKey.Pressed && eventKey.PhysicalKeycode == Key.Space)
{
// Your code here.
}
}
void parse_input_event(event: InputEvent) 🔗
Подает InputEvent в игру. Может использоваться для искусственного запуска событий ввода из кода. Также генерирует вызовы Node._input().
var cancel_event = InputEventAction.new()
cancel_event.action = "ui_cancel"
cancel_event.pressed = true
Input.parse_input_event(cancel_event)
var cancelEvent = new InputEventAction();
cancelEvent.Action = "ui_cancel";
cancelEvent.Pressed = true;
Input.ParseInputEvent(cancelEvent);
Примечание: Вызов этой функции не влияет на операционную систему. Так, например, отправка InputEventMouseMotion не переместит курсор мыши ОС в указанную позицию (используйте вместо этого warp_mouse()), а отправка Alt/Cmd + Tab в качестве InputEventKey не будет переключать между активными окнами.
void remove_joy_mapping(guid: String) 🔗
Удаляет все сопоставления из внутренней базы данных, которые соответствуют данному GUID. Все подключенные в данный момент джойпады, которые используют этот GUID, станут не сопоставленными.
На Android Godot будет сопоставлен с внутренним резервным сопоставлением.
void set_accelerometer(value: Vector3) 🔗
Устанавливает значение ускорения акселерометрического датчика. Может использоваться для отладки на устройствах без аппаратного датчика, например, в редакторе на ПК.
Примечание: Это значение может быть немедленно перезаписано значением аппаратного датчика на Android и iOS.
void set_custom_mouse_cursor(image: Resource, shape: CursorShape = 0, hotspot: Vector2 = Vector2(0, 0)) 🔗
Устанавливает пользовательское изображение курсора мыши, которое отображается только внутри игрового окна для заданной мыши shape. Также можно указать горячую точку. Передача null в параметр image сбрасывает его до системного курсора.
image может быть либо Texture2D, либо Image, а его размер должен быть меньше или равен 256×256. Чтобы избежать проблем с рендерингом, рекомендуются размеры меньше или равны 128×128.
hotspot должен быть в пределах размера image.
Примечание: AnimatedTexture не поддерживаются в качестве пользовательских курсоров мыши. При использовании AnimatedTexture будет отображаться только первый кадр.
Примечание: Рекомендуются режимы сжатия Lossless, Lossy или Uncompressed. Режим сжатия Video RAM может использоваться, но он будет распакован на ЦП, что означает замедление времени загрузки и отсутствие экономии памяти по сравнению с режимами без потерь.
Примечание: На веб-платформе максимально допустимый размер изображения курсора составляет 128×128. Изображения курсора размером более 32×32 также будут отображаться только в том случае, если изображение курсора мыши полностью расположено на странице по соображениям безопасности.
void set_default_cursor_shape(shape: CursorShape = 0) 🔗
Устанавливает форму курсора по умолчанию для использования в области просмотра вместо CURSOR_ARROW.
Примечание: Если вы хотите изменить форму курсора по умолчанию для узлов Control, используйте вместо этого Control.mouse_default_cursor_shape.
Примечание: Этот метод генерирует InputEventMouseMotion для немедленного обновления курсора.
void set_gravity(value: Vector3) 🔗
Устанавливает значение силы тяжести (gravity) акселерометрического датчика. Может использоваться для отладки на устройствах без аппаратного датчика, например, в редакторе на ПК.
Примечание: Это значение может быть немедленно перезаписано значением аппаратного датчика на Android и iOS.
void set_gyroscope(value: Vector3) 🔗
Устанавливает значение скорости вращения датчика гироскопа. Может использоваться для отладки на устройствах без аппаратного датчика, например в редакторе на ПК.
Примечание: Это значение может быть немедленно перезаписано значением аппаратного датчика на Android и iOS.
void set_joy_light(device: int, color: Color) 🔗
Устанавливает цвет светодиода джойстика (если он есть). См. также has_joy_light().
Примечание: Получить цвет подсветки джойстика невозможно. Если вам необходимо знать назначенный цвет, сохраните его отдельно.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
void set_joy_motion_sensors_calibration(device: int, calibration_info: Dictionary) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Задает информацию о калибровке указанного джойстика. См. также get_joy_motion_sensors_calibration().
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки джойстика в играх.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
void set_joy_motion_sensors_enabled(device: int, enable: bool) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Включает или отключает датчики движения (акселерометр и гироскоп), если они доступны, на указанном джойстике.
См. start_joy_motion_sensors_calibration() для примера использования датчиков движения и калибровки джойстика в играх.
Рекомендуется отключать датчики движения, когда они больше не используются, так как в противном случае это может быстрее разрядить батарею контроллера.
Примечание: Эта функция поддерживается только в Windows, Linux, macOS и iOS.
void set_magnetometer(value: Vector3) 🔗
Устанавливает значение магнитного поля датчика магнитометра. Может использоваться для отладки на устройствах без аппаратного датчика, например в редакторе на ПК.
Примечание: Это значение может быть немедленно перезаписано значением аппаратного датчика на Android и iOS.
bool should_ignore_device(vendor_id: int, product_id: int) const 🔗
Запрашивает, следует ли игнорировать устройство ввода или нет. Устройства можно игнорировать, установив переменную среды SDL_GAMECONTROLLER_IGNORE_DEVICES. Прочтите документацию SDL для получения дополнительной информации.
Примечание: Некоторые сторонние инструменты могут вносить свой вклад в список игнорируемых устройств. Например, SteamInput создает виртуальные устройства из физических устройств для целей переназначения. Чтобы избежать обработки одного и того же устройства ввода дважды, исходное устройство добавляется в список игнорируемых.
void start_joy_motion_sensors_calibration(device: int) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Starts the process of calibrating the specified joypad's gyroscope, if it has one.
Once a joypad's gyroscope has been calibrated correctly (e.g. laying still on a table without being rotated), get_joy_gyroscope() will return values close or equal to Vector3.ZERO when the joypad is not being rotated.
Here's an example of how to use joypad gyroscope and gyroscope calibration in your games:
const GYRO_SENSITIVITY = 10.0
func _ready():
# In this example we only use the first connected joypad (id 0).
if 0 not in Input.get_connected_joypads():
return
if not Input.has_joy_motion_sensors(0):
return
# We must enable the motion sensors before using them.
Input.set_joy_motion_sensors_enabled(0, true)
# (Tell the users here that they need to put their joypads on a flat surface and wait for confirmation.)
# Start the calibration process.
calibrate_motion()
func _process(delta):
# Only move the object if the joypad motion sensors are calibrated.
if Input.is_joy_motion_sensors_calibrated(0):
move_object(delta)
func calibrate_motion():
Input.start_joy_motion_sensors_calibration(0)
# Wait for some time.
await get_tree().create_timer(1.0).timeout
Input.stop_joy_motion_sensors_calibration(0)
# The joypad is now calibrated.
func move_object(delta):
var node: Node3D = ... # Put your node here.
var gyro := Input.get_joy_gyroscope(0)
node.rotation.x -= -gyro.y * GYRO_SENSITIVITY * delta # Use rotation around the Y axis (yaw) here.
node.rotation.y += -gyro.x * GYRO_SENSITIVITY * delta # Use rotation around the X axis (pitch) here.
private const float GyroSensitivity = 10.0;
public override void _Ready()
{
// In this example we only use the first connected joypad (id 0).
if (!Input.GetConnectedJoypads().Contains(0))
{
return;
}
if (!Input.HasJoyMotionSensors(0))
{
return;
}
// We must enable the accelerometer and the gyroscope before using them.
Input.SetJoyMotionSensorsEnabled(0, true);
// (Tell the users here that they need to put their joypads on a flat surface and wait for confirmation.)
// Start the calibration process.
CalibrateMotion();
}
public override void _Process(double delta)
{
// Only move the object if the joypad motion sensors are calibrated.
if (Input.IsJoyMotionSensorsCalibrated(0))
{
MoveObject(delta);
}
}
private async Task CalibrateMotion()
{
Input.StartJoyMotionSensorsCalibration(0);
// Wait for some time.
await ToSignal(GetTree().CreateTimer(1.0), SceneTreeTimer.SignalName.Timeout);
Input.StopJoyMotionSensorsCalibration(0);
// The joypad is now calibrated.
}
private void MoveObject(double delta)
{
Node3D node = ... ; // Put your object here.
Vector3 gyro = Input.GetJoyGyroscope(0);
Vector3 rotation = node.Rotation;
rotation.X -= -gyro.Y * GyroSensitivity * (float)delta; // Use rotation around the Y axis (yaw) here.
rotation.Y += -gyro.X * GyroSensitivity * (float)delta; // Use rotation around the X axis (pitch) here.
node.Rotation = rotation;
}
Note: Accelerometer sensor doesn't usually require calibration.
Note: This feature is only supported on Windows, Linux, macOS, and iOS.
void start_joy_vibration(device: int, weak_magnitude: float, strong_magnitude: float, duration: float = 0) 🔗
Starts to vibrate the joypad. See also has_joy_vibration() and is_joy_vibrating().
Joypads usually come with two rumble motors, a strong and a weak one.
weak_magnitude is the strength of the weak motor (between 0.0 and 1.0).
strong_magnitude is the strength of the strong motor (between 0.0 and 1.0).
duration is the duration of the effect in seconds (a duration of 0.0 will try to play the vibration as long as possible, which is about 65 seconds).
The vibration can be stopped early by calling stop_joy_vibration().
See also get_joy_vibration_strength() and get_joy_vibration_duration().
Note: For macOS, vibration is only supported in macOS 11 and later. When connected via USB, vibration is only supported for major brand controllers (except Xbox One and Xbox Series X/S controllers) due to macOS limitations.
void stop_joy_motion_sensors_calibration(device: int) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Stops the calibration process of the specified joypad's motion sensors.
See start_joy_motion_sensors_calibration() for an example on how to use joypad motion sensors and calibration in your games.
Note: This feature is only supported on Windows, Linux, macOS, and iOS.
void stop_joy_vibration(device: int) 🔗
Останавливает вибрацию джойстика, запущенную с помощью start_joy_vibration().
void vibrate_handheld(duration_ms: int = 500, amplitude: float = -1.0) 🔗
Вибрировать портативное устройство в течение указанного времени в миллисекундах.
amplitude — это сила вибрации, значение которой находится в диапазоне от 0.0 до 1.0. Если установлено значение -1.0, используется сила вибрации устройства по умолчанию.
Примечание: Этот метод реализован на Android, iOS и Web. Он не оказывает влияния на другие платформы.
Примечание: Для Android метод vibrate_handheld() требует включения разрешения VIBRATE в настройках экспорта. В противном случае метод vibrate_handheld() не будет иметь никакого эффекта.
Примечание: Для iOS указание длительности поддерживается только в iOS 13 и более поздних версиях.
Примечание: Для Web амплитуду изменить нельзя.
Примечание: Некоторые веб-браузеры, такие как Safari и Firefox для Android, не поддерживают vibrate_handheld().
Примечание: Настройки устройства, такие как включение/выключение вибрации, режим «не беспокоить» или включение/выключение определенной тактильной обратной связи, могут препятствовать работе vibrate_handheld().
void warp_mouse(position: Vector2) 🔗
Устанавливает положение мыши на указанный вектор, указанный в пикселях и относительно начала координат в верхнем левом углу текущего окна игры диспетчера окон.
Положение мыши обрезается до границ разрешения экрана или до границ окна игры, если MouseMode установлен на MOUSE_MODE_CONFINED или MOUSE_MODE_CONFINED_HIDDEN.
Примечание: warp_mouse() поддерживается только в Windows, macOS и Linux. Он не действует на Android, iOS и Web.