InputEventMouseMotion

继承: InputEventMouse < InputEventWithModifiers < InputEventFromWindow < InputEvent < Resource < RefCounted < Object

代表鼠标或笔的移动。

描述

存储鼠标或笔的运动信息。支持相对位置、绝对位置和速度。见 Node._input

注意:默认情况下,该事件每个渲染帧最多只会发出一个。如果你需要更精确的输入汇报,请将 Input.use_accumulated_input 设置为 false,尽可能频繁地发出事件。如果你使用 InputEventMouseMotion 来画线,请考虑同时实现布雷森汉姆直线算法,以避免在用户快速移动鼠标时出现可见的线条空隙。

教程

属性

bool

pen_inverted

false

float

pressure

0.0

Vector2

relative

Vector2(0, 0)

Vector2

screen_relative

Vector2(0, 0)

Vector2

screen_velocity

Vector2(0, 0)

Vector2

tilt

Vector2(0, 0)

Vector2

velocity

Vector2(0, 0)


属性说明

bool pen_inverted = false 🔗

  • void set_pen_inverted(value: bool)

  • bool get_pen_inverted()

使用手写笔的橡皮端时,返回 true

注意:这个属性在 Linux、macOS 和 Windows 上实现。


float pressure = 0.0 🔗

  • void set_pressure(value: float)

  • float get_pressure()

表示用户对笔施加的压力。范围从 0.01.0


Vector2 relative = Vector2(0, 0) 🔗

鼠标相对于前一个位置(上一帧时的位置)的位置。

注意:因为 InputEventMouseMotion 只会在鼠标移动时发出,用户停止移动鼠标时,最后一个事件的相对位置不会是 Vector2(0, 0)

注意:relative 会根据内容缩放系数自动进行缩放,这个系数是在项目的拉伸模式设置中定义的。也就是说在 Input.MOUSE_MODE_CAPTURED 鼠标模式下,如果在脚本中使用 relative 来处理鼠标瞄准,那么鼠标的灵敏度就会因分辨率的不同而不同。为了避免这种情况,请改用 screen_relative


Vector2 screen_relative = Vector2(0, 0) 🔗

  • void set_screen_relative(value: Vector2)

  • Vector2 get_screen_relative()

未缩放的鼠标位置,该位置相对于屏幕坐标系中的前一个位置(上一帧的位置)。

注意:由于 InputEventMouseMotion 只在鼠标移动时发出,因此当用户停止移动鼠标时,上一个事件的相对位置不会是 Vector2(0, 0)。该坐标会根据内容缩放因子或调用 InputEvent.xformed_by 进行缩放。当使用 Input.MOUSE_MODE_CAPTURED 鼠标模式时,无论项目的拉伸模式如何,对于鼠标瞄准来说,这都应该优于 relative


Vector2 screen_velocity = Vector2(0, 0) 🔗

  • void set_screen_velocity(value: Vector2)

  • Vector2 get_screen_velocity()

屏幕坐标中未缩放的鼠标速度(单位为每秒像素数)。该速度根据内容缩放系数或对 InputEvent.xformed_by 的调用进行缩放。当使用 Input.MOUSE_MODE_CAPTURED 鼠标模式时,无论项目的拉伸模式如何,这都应该优先于鼠标瞄准的 velocity


Vector2 tilt = Vector2(0, 0) 🔗

代表笔的倾斜角度。正的 X 坐标值表示向右倾斜。正的Y坐标值表示向用户自身倾斜。两个轴的范围是 -1.01.0


Vector2 velocity = Vector2(0, 0) 🔗

鼠标速度(单位为像素每秒)。

注意:velocity 根据内容缩放系数自动缩放,内容缩放系数由项目的拉伸模式设置定义。这意味着在使用 Input.MOUSE_MODE_CAPTURED 鼠标模式处理鼠标瞄准的脚本中使用 velocity 时,鼠标灵敏度将根据分辨率而有所不同。为了避免这种情况,请改用 screen_velocity