鼠标和输入坐标

关于

这个小教程旨在理清许多关于输入坐标、获取鼠标位置和屏幕分辨率等方面的常见错误。

硬件显示坐标

使用硬件坐标在编写要在 PC 上运行的复杂 UI 时是有意义的,比如编辑器、网络游戏、工具等。然而,在这个范围之外,它就没有那么大的意义了。

视口显示坐标

Godot 使用视口(Viewport)显示内容,并且视口可以通过若干选项进行缩放(参见《多分辨率》教程)。然后,使用节点中的函数来获得鼠标坐标和视口大小,例如:

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 时,InputEventMouseMotion 中的 event.position 值为屏幕中心。请使用 event.relative 代替 event.positionevent.velocity 来处理鼠标移动和位置变化。