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.

Vector2

使用浮点数坐标的 2D 向量。

描述

包含两个元素的结构体,可用于代表 2D 坐标或任何数值的二元组。

使用浮点数坐标。默认情况下,这些浮点值为 32 位精度,与始终为 64 位的 float 并不相同。如果需要双精度,请在编译引擎时使用 precision=double 选项。

对应的整数版本见 Vector2i

注意:在布尔语境中,如果 Vector2 等于 Vector2(0, 0) 则求值结果为 false。否则 Vector2 的求值结果始终为 true

教程

属性

float

x

0.0

float

y

0.0

构造函数

Vector2

Vector2()

Vector2

Vector2(from: Vector2)

Vector2

Vector2(from: Vector2i)

Vector2

Vector2(x: float, y: float)

方法

Vector2

abs() const

float

angle() const

float

angle_to(to: Vector2) const

float

angle_to_point(to: Vector2) const

float

aspect() const

Vector2

bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const

Vector2

bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const

Vector2

bounce(n: Vector2) const

Vector2

ceil() const

Vector2

clamp(min: Vector2, max: Vector2) const

Vector2

clampf(min: float, max: float) const

float

cross(with: Vector2) const

Vector2

cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const

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

Vector2

direction_to(to: Vector2) const

float

distance_squared_to(to: Vector2) const

float

distance_to(to: Vector2) const

float

dot(with: Vector2) const

Vector2

floor() const

Vector2

from_angle(angle: float) static

bool

is_equal_approx(to: Vector2) const

bool

is_finite() const

bool

is_normalized() const

bool

is_zero_approx() const

float

length() const

float

length_squared() const

Vector2

lerp(to: Vector2, weight: float) const

Vector2

limit_length(length: float = 1.0) const

Vector2

max(with: Vector2) const

int

max_axis_index() const

Vector2

maxf(with: float) const

Vector2

min(with: Vector2) const

int

min_axis_index() const

Vector2

minf(with: float) const

Vector2

move_toward(to: Vector2, delta: float) const

Vector2

normalized() const

Vector2

orthogonal() const

Vector2

posmod(mod: float) const

Vector2

posmodv(modv: Vector2) const

Vector2

project(b: Vector2) const

Vector2

reflect(line: Vector2) const

Vector2

rotated(angle: float) const

Vector2

round() const

Vector2

sign() const

Vector2

slerp(to: Vector2, weight: float) const

Vector2

slide(n: Vector2) const

Vector2

snapped(step: Vector2) const

Vector2

snappedf(step: float) const

操作符

bool

operator !=(right: Vector2)

Vector2

operator *(right: Transform2D)

Vector2

operator *(right: Vector2)

Vector2

operator *(right: float)

Vector2

operator *(right: int)

Vector2

operator +(right: Vector2)

Vector2

operator -(right: Vector2)

Vector2

operator /(right: Vector2)

Vector2

operator /(right: float)

Vector2

operator /(right: int)

bool

operator <(right: Vector2)

bool

operator <=(right: Vector2)

bool

operator ==(right: Vector2)

bool

operator >(right: Vector2)

bool

operator >=(right: Vector2)

float

operator [](index: int)

Vector2

operator unary+()

Vector2

operator unary-()


常量

AXIS_X = 0 🔗

X 轴的枚举值。由 max_axis_indexmin_axis_index 返回。

AXIS_Y = 1 🔗

Y 轴的枚举值。由 max_axis_indexmin_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。


属性说明

float x = 0.0 🔗

向量的 X 分量。也可以通过使用索引位置 [0] 访问。


float y = 0.0 🔗

向量的 Y 分量。也可以通过使用索引位置 [1] 访问。


构造函数说明

Vector2 Vector2() 🔗

构造默认初始化的 Vector2,所有分量均为 0


Vector2 Vector2(from: Vector2)

构造给定 Vector2 的副本。


Vector2 Vector2(from: Vector2i)

Vector2i 构造新的 Vector2


Vector2 Vector2(x: float, y: float)

从给定的 xy 构造新的 Vector2


方法说明

Vector2 abs() const 🔗

返回一个新向量,其所有分量都是绝对值,即正值。


float angle() const 🔗

返回该向量与 X 轴正方向的夹角,单位为弧度。X 轴正方向为 (1, 0) 向量。

例如,Vector2.RIGHT.angle() 将返回 0,Vector2.DOWN.angle() 将返回 PI / 2(四分之一圈,即 90 度),Vector2(1, -1).angle() 将返回 -PI / 4(负八分之一圈,即 -45 度)。

返回夹角图示。

相当于使用该向量的 yx 作为参数对 @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()

返回夹角示意图。


float aspect() const 🔗

返回该向量的长宽比,即 xy 的比例。


Vector2 bezier_derivative(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗

返回贝赛尔曲线t 处的导数,该曲线由此向量和控制点 control_1control_2、终点 end 定义。


Vector2 bezier_interpolate(control_1: Vector2, control_2: Vector2, end: Vector2, t: float) const 🔗

返回贝赛尔曲线t 处的点,该曲线由此向量和控制点 control_1control_2、终点 end 定义。


Vector2 bounce(n: Vector2) const 🔗

Returns the vector "bounced off" from a line defined by the given normal n perpendicular to the line.

Note: bounce performs the operation that most engines and frameworks call reflect().


Vector2 ceil() const 🔗

返回一个新向量,所有的分量都是向上舍入(正无穷大方向)。


Vector2 clamp(min: Vector2, max: Vector2) const 🔗

返回一个新向量,每个分量都使用 @GlobalScope.clamp 限制在 minmax 之间。


Vector2 clampf(min: float, max: float) const 🔗

Returns a new vector with all components clamped between min and max, by running @GlobalScope.clamp on each component.


float cross(with: Vector2) const 🔗

Returns the 2D analog of the cross product for this vector and with.

This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. If the two vectors are parallel this returns zero, making it useful for testing if two vectors are parallel.

Note: Cross product is not defined in 2D mathematically. This method embeds the 2D vectors in the XY plane of 3D space and uses their cross product's Z component as the analog.


Vector2 cubic_interpolate(b: Vector2, pre_a: Vector2, post_b: Vector2, weight: float) const 🔗

返回该向量和 b 之间进行三次插值 weight 处的结果,使用 pre_apost_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_apost_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 之间的距离的平方。

该方法比 distance_to 运行得更快,因此请在需要比较向量或者用于某些公式的平方距离时,优先使用这个方法。


float distance_to(to: Vector2) const 🔗

返回该向量与 to 之间的距离。


float dot(with: Vector2) const 🔗

Returns the dot product of this vector and with. This can be used to compare the angle between two vectors. For example, this can be used to determine whether an enemy is facing the player.

The dot product will be 0 for a right angle (90 degrees), greater than 0 for angles narrower than 90 degrees and lower than 0 for angles wider than 90 degrees.

When using unit (normalized) vectors, the result will always be between -1.0 (180 degree angle) when the vectors are facing