鼠标和输入坐标

关于

这个小教程的目的是为了清除许多关于输入坐标, 获取鼠标位置和屏幕分辨率等常见错误.

硬件显示坐标

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

视区显示坐标

多分辨率 教程). 然后, 使用节点中的函数来获得鼠标坐标和视区大小, 例如: GDScript C#

  1. 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_rect().size)
  1. public override void _Input(InputEvent @event){ // Mouse in viewport coordinates. if (@event is InputEventMouseButton eventMouseButton) GD.Print("Mouse Click/Unclick at: ", eventMouseButton.Position); else if (@event is InputEventMouseMotion eventMouseMotion) GD.Print("Mouse Motion at: ", eventMouseMotion.Position); // Print the size of the viewport. GD.Print("Viewport Resolution is: ", GetViewportRect().Size);}

另外, 也可以从视窗查询鼠标的坐标: GDScript C#

  1. get_viewport().get_mouse_position()
  1. GetViewport().GetMousePosition();

注解 Input.MOUSE_MODE_CAPTURED 时, 来自 InputEventMouseMotionevent.position 值为屏幕中心. 使用 event.relative 代替 event.positionevent.speed 来处理鼠标移动和位置变化.