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...
InputEventMouseMotion
继承: InputEventMouse < InputEventWithModifiers < InputEventFromWindow < InputEvent < Resource < RefCounted < Object
代表鼠标或笔的移动。
描述
存储鼠标或笔的运动信息。支持相对位置、绝对位置和速度。见 Node._input()。
注意:默认情况下,该事件每个渲染帧最多只会发出一个。如果你需要更精确的输入汇报,请将 Input.use_accumulated_input 设置为 false
,尽可能频繁地发出事件。如果你使用 InputEventMouseMotion 来画线,请考虑同时使用 Geometry2D.bresenham_line(),避免在用户快速移动鼠标时出现可见的线条空隙。
注意:即使鼠标没有移动,操作系统或 Godot 本身也可能会发出该事件。如果你确实需要知道鼠标是否移动(例如为了防止显示工具提示),你应当检查 relative.is_zero_approx()
是否为 false
。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
属性说明
使用手写笔的橡皮端时,返回 true
。
注意:这个属性在 Linux、macOS 和 Windows 上实现。
表示用户对笔施加的压力。范围从 0.0
到 1.0
。
Vector2 relative = Vector2(0, 0)
🔗
鼠标相对于前一个位置(上一帧时的位置)的位置。
注意:因为 InputEventMouseMotion 可能只在鼠标移动时发出,检查该属性无法可靠地检测鼠标何时停止移动。可能需要一个单独的短时间计时器。
注意:relative 会根据内容缩放系数自动进行缩放,这个系数是在项目的拉伸模式设置中定义的。也就是说在 Input.MOUSE_MODE_CAPTURED 鼠标模式下,如果在脚本中使用 relative 来处理鼠标瞄准,那么鼠标的灵敏度就会因分辨率的不同而不同。为了避免这种情况,请改用 screen_relative。
Vector2 screen_relative = Vector2(0, 0)
🔗
未缩放的鼠标位置,该位置相对于屏幕坐标系中的前一个位置(上一帧的位置)。
注意:因为 InputEventMouseMotion 可能只在鼠标移动时发出,检查该属性无法可靠地检测鼠标何时停止移动。可能需要一个单独的短时间计时器。
注意:该坐标不会根据内容缩放因子或调用 InputEvent.xformed_by() 进行缩放。当使用 Input.MOUSE_MODE_CAPTURED 鼠标模式时,无论项目的拉伸模式如何,对于鼠标瞄准来说,这都应该优于 relative。
Vector2 screen_velocity = Vector2(0, 0)
🔗
屏幕坐标中未缩放的鼠标速度(单位为每秒像素数)。该速度不根据内容缩放系数或对 InputEvent.xformed_by() 的调用进行缩放。当使用 Input.MOUSE_MODE_CAPTURED 鼠标模式时,无论项目的拉伸模式如何,这都应该优先于鼠标瞄准的 velocity。
Vector2 tilt = Vector2(0, 0)
🔗
代表笔的倾斜角度。正的 X 坐标值表示向右倾斜。正的Y坐标值表示向用户自身倾斜。两个轴的范围是 -1.0
到 1.0
。
Vector2 velocity = Vector2(0, 0)
🔗
鼠标速度(单位为像素每秒)。
注意:velocity 根据内容缩放系数自动缩放,内容缩放系数由项目的拉伸模式设置定义。这意味着在使用 Input.MOUSE_MODE_CAPTURED 鼠标模式处理鼠标瞄准的脚本中使用 velocity 时,鼠标灵敏度将根据分辨率而有所不同。为了避免这种情况,请改用 screen_velocity。