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...
Vector2¶
使用浮点数坐标的 2D 向量。
描述¶
包含两个元素的结构体,可用于代表 2D 坐标或任何数值的二元组。
使用浮点数坐标。默认情况下,这些浮点值为 32 位精度,与始终为 64 位的 float 并不相同。如果需要双精度,请在编译引擎时使用 precision=double
选项。
对应的整数版本见 Vector2i。
注意:在布尔语境中,如果 Vector2 等于 Vector2(0, 0)
则求值结果为 false
。否则 Vector2 的求值结果始终为 true
。
教程¶
属性¶
|
||
|
构造函数¶
Vector2() |
|
方法¶
abs() const |
|
angle() const |
|
angle_to_point(to: Vector2) const |
|
aspect() const |
|
bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const |
|
bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const |
|
ceil() const |
|
cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const |
|
cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const |
|
direction_to(to: Vector2) const |
|
distance_squared_to(to: Vector2) const |
|
distance_to(to: Vector2) const |
|
floor() const |
|
from_angle(angle: float) static |
|
is_equal_approx(to: Vector2) const |
|
is_finite() const |
|
is_normalized() const |
|
is_zero_approx() const |
|
length() const |
|
length_squared() const |
|
limit_length(length: float = 1.0) const |
|
max_axis_index() const |
|
min_axis_index() const |
|
move_toward(to: Vector2, delta: float) const |
|
normalized() const |
|
orthogonal() const |
|
round() const |
|
sign() const |
|
运算符¶
operator !=(right: Vector2) |
|
operator *(right: Transform2D) |
|
operator *(right: Vector2) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector2) |
|
operator -(right: Vector2) |
|
operator /(right: Vector2) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector2) |
|
operator <=(right: Vector2) |
|
operator ==(right: Vector2) |
|
operator >(right: Vector2) |
|
operator >=(right: Vector2) |
|
operator [](index: int) |
|
常量¶
AXIS_X = 0
🔗
X 轴的枚举值。由 max_axis_index 和 min_axis_index 返回。
AXIS_Y = 1
🔗
Y 轴的枚举值。由 max_axis_index 和 min_axis_index 返回。
ZERO = Vector2(0, 0)
🔗
零向量,所有分量都设置为 0
的向量。
ONE = Vector2(1, 1)
🔗
一向量,所有分量都设置为 1
的向量。
INF = Vector2(inf, inf)
🔗
无穷大向量,所有分量都设置为 @GDScript.INF 的向量。
LEFT = Vector2(-1, 0)
🔗
左单位向量。代表左的方向。
RIGHT = Vector2(1, 0)
🔗
右单位向量。代表右的方向。
UP = Vector2(0, -1)
🔗
上单位向量。在 2D 中 Y 是向下的,所以这个向量指向 -Y。
DOWN = Vector2(0, 1)
🔗
下单位向量。在 2D 中 Y 是向下的,所以这个向量指向 +Y。
属性说明¶
向量的 X 分量。也可以通过使用索引位置 [0]
访问。
向量的 Y 分量。也可以通过使用索引位置 [1]
访问。
构造函数说明¶
构造默认初始化的 Vector2,所有分量均为 0
。
Vector2 Vector2(from: Vector2)
构造给定 Vector2 的副本。
Vector2 Vector2(from: Vector2i)
从 Vector2i 构造新的 Vector2。
Vector2 Vector2(x: float, y: float)
从给定的 x
和 y
构造新的 Vector2。
方法说明¶
返回一个新向量,其所有分量都是绝对值,即正值。
返回该向量与 X 轴正方向的夹角,单位为弧度。X 轴正方向为 (1, 0)
向量。
例如,Vector2.RIGHT.angle()
将返回 0,Vector2.DOWN.angle()
将返回 PI / 2
(四分之一圈,即 90 度),Vector2(1, -1).angle()
将返回 -PI / 4
(负八分之一圈,即 -45 度)。
相当于使用该向量的 y 和 x 作为参数对 @GlobalScope.atan2 进行调用的结果:atan2(y, x)
。
float angle_to(to: Vector2) const 🔗
返回与给定向量的夹角,单位为弧度。
float angle_to_point(to: Vector2) const 🔗
返回连接两点的直线与 X 轴之间的夹角,单位为弧度。
a.angle_to_point(b)
等价于 (b - a).angle()
。
Vector2 bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗
返回贝赛尔曲线上 t
处的导数,该曲线由此向量和控制点 control_1
、control_2
、终点 end
定义。
Vector2 bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗
返回贝赛尔曲线上 t
处的点,该曲线由此向量和控制点 control_1
、control_2
、终点 end
定义。
Vector2 bounce(n: Vector2) const 🔗
返回从由给定垂直法线 n
定义的线“反弹”的向量。
注意: bounce 执行大多数引擎和框架调用 reflect()
的操作。
返回一个新向量,所有的分量都是向上舍入(正无穷大方向)。
Vector2 clamp(min: Vector2, max: Vector2) const 🔗
返回一个新向量,每个分量都使用 @GlobalScope.clamp 限制在 min
和 max
之间。
Vector2 clampf(min: float, max: float) const 🔗
返回一个新向量,每个分量都使用 @GlobalScope.clamp 限制在 min
和 max
之间。
float cross(with: Vector2) const 🔗
返回该向量和 with
的 2D 类比叉积。
这是由两个向量所形成的平行四边形的有符号面积。如果第二个向量是从第一个向量的顺时针方向出发的,则叉积为正面积。如果是逆时针方向,则叉积为负面积。如果两个向量平行,则返回零,这对于测试两个向量是否平行很有用。
注意:数学中没有定义二维空间的叉乘。此方法是将 2D 向量嵌入到 3D 空间的 XY 平面中,并使用它们的叉积的 Z 分量作为类比。
Vector2 cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const 🔗
返回该向量和 b
之间进行三次插值 weight
处的结果,使用 pre_a
和 post_b
作为控制柄。weight
在 0.0 到 1.0 的范围内,代表插值的量。
Vector2 cubic_interpolate_in_time(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float, b_t: float, pre_a_t: float, post_b_t: float) const 🔗
返回该向量和 b
之间进行三次插值 weight
处的结果,使用 pre_a
和 post_b
作为控制柄。weight
在 0.0 到 1.0 的范围内,代表插值的量。
通过使用时间值,可以比 cubic_interpolate 进行更平滑的插值。
Vector2 direction_to(to: Vector2) const 🔗
返回从该向量指向 to
的归一化向量。相当于使用 (b - a).normalized()
。
float distance_squared_to(to: Vector2) const 🔗
返回该向量与 to
之间的距离的平方。