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.

Мышь и входные координаты

О Godot Engine

Причина этого небольшого урока состоит в том, чтобы прояснить многие распространенные ошибки относительно входных координат, получения положения мыши, разрешения экрана и т. д.

Экранные координаты

Использование экранных координат имеет смысл при написании сложных графических интерфейсов, предназначенных для работы на ПК, например редакторов, MMO, инструментов и т. д. Однако за пределами этой области их применение не имеет особого смысла.

Координаты области просмотра

Godot использует области просмотра (viewports) для отображения контента, и эти области просмотра можно масштабировать с помощью нескольких параметров (см. руководство Несколько резолюций). Затем вы можете использовать функции в узлах для получения координат мыши и размера области просмотра, например:

func _input(event):
    # Mouse in viewport coordinates.
    if event is InputEventMouseButton:
        print("Mouse Click/Unclick at: ", event.position)
    elif event is InputEventMouseMotion:
        print("Mouse Motion at: ", event.position)

    # Print the size of the viewport.
    print("Viewport Resolution is: ", get_viewport().get_visible_rect().size)

Кроме того, положение мыши можно запросить у области просмотра:

get_viewport().get_mouse_position()

Примечание

Если режим мыши установлен на Input.MOUSE_MODE_CAPTURED, значение event.position из InputEventMouseMotion соответствует центру экрана. Для обработки перемещения мыши и изменения её положения используйте event.relative вместо event.position и event.velocity.

При реализации таких функций как mouselook, рекомендуется использовать event.screen_relative и event.screen_velocity вместо event.relative и event.velocity, чтобы движение мыши одинаково отображалось на различных разрешениях экрана.