Appearance
Vector2(JavaScript)
Vector2
Scripting Name:Insight.Vector2
二维向量,或二维点。
constructor( x?: number, y?: number );
Parameters
- x : number (可选)x 分量,默认为 0
- y : number (可选)y 分量,默认为 0
Properties
x
type :number
x 值。
y
type :number
y 值。
width
type :number
等同于 x 值。
height
type :number
等同于 y 值。
Static Properties
down
type :Insight.Vector2
(只读)(0,-1)。
left
type :Insight.Vector2
(只读)(-1,0)。
negativeInfinity
type :Insight.Vector2
(只读)(-inf,-inf)。
one
type :Insight.Vector2
(只读)(1,1)。
positiveInfinity
type :Insight.Vector2
(只读)(+inf,+inf)。
right
type :Insight.Vector2
(只读)(1,0)。
up
type :Insight.Vector2
(只读)(0,1)。
zero
type :Insight.Vector2
(只读)(0,0)。
Methods
set
javascript
set(x: number, y: number): this;
设置向量各个分量的值,返回值为本身。
Parameters
- x : number 分量 x
- y : number 分量 y
setScalar
javascript
setScalar(scalar: number): this;
用一个浮点数来设置向量各个分量的值,返回值为本身。
Parameters
- scalar : number 用来设置 x 和 y 两个分量的浮点数
setX
javascript
setX(x: number): this;
用一个浮点数来设置 x 分量的值,返回值为本身。
Parameters
- x : number 用来设置 x 分量的浮点数
setY
javascript
setY(y: number): this;
用一个浮点数来设置 y 分量的值,返回值为本身。
Parameters
- y : number 用来设置 y 分量的浮点数
setComponent
javascript
setComponent(index: number, value: number): this;
设置向量中某个分量的值。
Parameters
- index : number 向量中分量的下标,取值范围为[0,1]
- value : number 新的值
getComponent
javascript
getComponent(index: number): number;
返回向量中某个分量的值。
Parameters
- index : number 向量中分量的下标,取值范围为[0,1]
clone
javascript
clone(): Insight.Vector2;
克隆一个新向量等于本向量。
copy
javascript
copy(v: Vector2): this;
将另一个向量的值拷贝到本向量中。
Parameters
- v : Insight.Vector2 另一个向量
add
javascript
add(v: Vector2): this;
将另一个向量 v 的值累加到本向量中,相当于 x = x + v。
Parameters
- v : Insight.Vector2 另一个向量
javascript
// 提示:可以进行连续计算,如:
var a = Insight.Vector2(1, 1);var b = Insight.Vector2(2, 3);a.add(b).add(b); // 相当于a=a+b+b
addScalar
javascript
addScalar(s: number): this;
将一个浮点数 s 的值累加到本向量的各个分量中,相当于 x = x + s。
Parameters
- s : number 待累加的浮点数
addVectors
javascript
addVectors(a: Vector2, b: Vector2): this;
将两个向量 a 和 b 相加,结果放入本向量中,本向量原来的值将被丢弃,相当于 x = a + b。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
addScaledVector
javascript
addScaledVector(v: Vector2, s: number): this;
将另一个向量 v 与浮点数 s 相乘后,再累加到本向量中,相当于 x = x + v * s。
Parameters
- v : Insight.Vector2 向量 v
- s : number 浮点数
sub
javascript
sub(v: Vector2): this;
将另一个向量 v 的值从本向量中减去,相当于 x = x - v。
Parameters
- v : Insight.Vector2 另一个向量
javascript
// 提示:可以进行连续计算,如:
var a = Insight.Vector2(1, 1);var b = Insight.Vector2(2, 3);a.sub(b).add(b.setY(10)); // 相当于a=a-b+(2, 10)
subScalar
javascript
subScalar(s: number): this;
将一个浮点数 s 的值从本向量中减去,相当于 x = x - s。
Parameters
- s : number 待减去的浮点数
subVectors
javascript
subVectors(a: Vector2, b: Vector2): this;
将两个向量 a 和 b 相减,结果放入本向量中,本向量原来的值将被丢弃,相当于 x = a - b。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
multiply
javascript
multiply(v: Vector2): this;
将另一个向量 v 的值与本向量相乘,相当于 x = x * v。
Parameters
- v : Insight.Vector2 另一个向量
javascript
// 提示:可以进行连续计算,如:
var a = Insight.Vector2(1, 1);var b = Insight.Vector2(2, 3);a.add(b).multiply(b); // 相当于a=(a+b)*b
multiplyScalar
javascript
multiplyScalar(s: number): this;
将一个浮点数 s 的值与本向量相乘,相当于 x = x * s。
Parameters
- s : number 待相乘的浮点数
multiplyVectors
javascript
multiplyVectors(a: Vector2, b: Vector2): this;
将两个向量 a 和 b 相乘,结果放入本向量中,本向量原来的值将被丢弃,相当于 x = a * b。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
divide
javascript
divide(v: Vector2): this;
将另一个向量 v 的值与本向量相除,相当于 x = x / v。
Parameters
- v : Insight.Vector2 另一个向量
javascript
// 提示:可以进行连续计算,如:
var a = Insight.Vector2(1, 1);var b = Insight.Vector2(2, 3);a.add(b).divide(b); // 相当于a=(a+b)/b
divideScalar
javascript
divideScalar(s: number): this;
将一个浮点数 s 的值与本向量相除,相当于 x = x / s。
Parameters
- s : number 待相除的浮点数
divideVectors
javascript
divideVectors(a: Vector2, b: Vector2): this;
将两个向量 a 和 b 相除,结果放入本向量中,本向量原来的值将被丢弃,相当于 x = a / b。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
min
javascript
min(v: Vector2): this;
将本向量与另一个向量 v 中较小的一个的值保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- v : Insight.Vector2 另一个向量
max
javascript
max(v: Vector2): this;
将本向量与另一个向量 v 中较大的一个的值保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- v : Insight.Vector2 另一个向量
clamp
javascript
clamp(min: Vector2, max: Vector2): this;
将本向量夹持到向量 min 和向量 max 之间,并把夹持结果保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- min : Insight.Vector2 向量 min
- max : Insight.Vector2 向量 max
clampScalar
javascript
clampScalar(min: number, max: number): this;
将本向量夹持到浮点数 min 和浮点数 max 之间,并把夹持结果保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- min : number 浮点数 min
- max : number 浮点数 max
clampLength
javascript
clampLength(min: number, max: number): this;
将本向量的长度夹持到浮点数 min 和浮点数 max 之间,并把计算后的新的向量值保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- min : number 浮点数 min
- max : number 浮点数 max
floor
javascript
floor(): this;
将本向量的各个分量进行向下取整,因此本向量的原值可能会被改变。
ceil
javascript
ceil(): this;
将本向量的各个分量进行向上取整,因此本向量的原值可能会被改变。
round
javascript
round(): this;
将本向量的各个分量进行四舍五入,因此本向量的原值可能会被改变。
roundToZero
javascript
roundToZero(): this;
将本向量的各个分量进行向零取整(正数为向下取整,负数为向上取整),因此本向量的原值可能会被改变。
negate
javascript
negate(): this;
将本向量的各个分量取反,因此本向量的原值可能会被改变。
dot
javascript
dot(v: Vector2): number;
将本向量与另一个向量 v 进行点乘操作,返回点乘结果。
Parameters
- v : Insight.Vector2 另一个向量
cross
javascript
cross(v: Vector2): number;
将本向量与另一个向量 v 进行叉乘操作,返回叉乘结果。Note that a 'cross-product' in 2D is not well-defined. This function computes a geometric cross-product often used in 2D graphics。
Parameters
- v : Insight.Vector2 另一个向量
lengthSq
javascript
lengthSq(): number;
计算本向量的长度的平方。
length
javascript
length(): number;
计算本向量的长度。
manhattanLength
javascript
manhattanLength(): number;
计算本向量的曼哈顿长度。
normalize
javascript
normalize(): this;
对向量归一化,因此本向量的原值可能会被改变。
angle
javascript
angle(): number;
计算本向量沿着 x 轴正方向的夹角角度。
distanceTo
javascript
distanceTo(v: Vector2): number;
计算本向量与另一个向量 v 之间的距离长度。
Parameters
- v : Insight.Vector2 另一个向量
distanceToSquared
javascript
distanceToSquared(v: Vector2): number;
计算本向量与另一个向量 v 之间的距离长度的平方。如果你只是想比较两个距离的大小,那么用平方值的效率更高。
Parameters
- v : Insight.Vector2 另一个向量
manhattanDistanceTo
javascript
manhattanDistanceTo(v: Vector2): number;
计算本向量与另一个向量 v 之间的曼哈顿距离。
Parameters
- v : Insight.Vector2 另一个向量
setLength
javascript
setLength(length: number): this;
将本向量设置为一个与原先向量方向相同的、但长度等于 length 的新向量,因此本向量的原值可能会被改变。
Parameters
- length : number 新长度
lerp
javascript
lerp(v: Vector2, alpha: number): this;
将本向量与向量 v 进行线性插值操作,并把结果保存在本向量中,因此本向量的原值可能会被改变。
Parameters
- v : Insight.Vector2 另一个向量 v
- alpha : number 线性插值的取值,范围在[0,1]之间。
lerpVectors
javascript
lerpVectors(v1: Vector2, v2: Vector2, alpha: number): this;
将向量 v1 与向量 v2 进行线性插值操作,并把结果保存在本向量中,因此本向量的原值将被丢弃。
Parameters
- v1 : Insight.Vector2 向量 v1
- v2 : Insight.Vector2 向量 v2
- alpha : number 线性插值的取值,范围在[0,1]之间。
equals
javascript
equals(v: Vector2): boolean;
判断是否等于另一个向量 v。
Parameters
- v : Insight.Vector2 另一个向量
rotateAround
javascript
rotateAround(center: Vector2, angle: number): this;
将本向量绕轴旋转,并把旋转后的向量保存在本向量中,因此本向量的原值将被丢弃。
Parameters
- center : Insight.Vector2 旋转轴
- angle : number 旋转角度
toString
javascript
toString(): string;
按照(x, y)的格式输出。
fromArray
javascript
fromArray(array: number[], offset?: number): this;
从一个数组 array 中获取向量的每个分量的值,并填充到本向量中,因此本向量的原值可能会被丢弃。
Parameters
- array : number[] 带有 16 个分量值的数组
- offset?: number 可选参数,表示从数组的第 offset 个下标开始获取值,如不填则默认 0
toArray
javascript
toArray(array?: number[], offset?: number): number[];
将本向量中的所有分量值填充到 array 数组中。返回值为填充好的 array 数组(与参数中的 array 是同一个)。如 array 数组为空,则返回一个全新的数组。
Parameters
- array : number[] 可选参数,待填充的数组,如不填则返回一个全新的数组
- offset?: number 可选参数,表示从数组的第 offset 个下标开始填充值,offset 的值不能超过数组长度,否则会抛出异常。如不填则默认 0
Static Methods
Angle
javascript
static Angle(a: Vector2, b: Vector2): number;
计算两个向量之间的夹角,夹角与方向无关,区间在[0,180]。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
⚠️ 根据数学定义,零向量与任何非零向量同向,所以如果其中一个或者两个为零向量,应该返回 0。但为了与 Unity 保持一致,这里返回 90。
SignedAngle
javascript
static SignedAngle(from: Vector2, to: Vector2): number;
计算从向量 from 旋转到向量 to 的夹角,夹角为[-180,180],以顺时针为正方向。
Parameters
- from : Insight.Vector2 旋转起始向量
- to : Insight.Vector2 旋转结束向量
⚠️ 根据数学定义,零向量与任何非零向量同向,所以如果其中一个或者两个为零向量,应该返回 0。但为了与 Unity 保持一致,这里返回 90。
ClampMagnitude
javascript
static ClampMagnitude(vector: Vector2, maxLength: number): Vector2;
返回一个与 vector 同向,长度最大不超过 maxLength 的向量。此方法会返回一个全新的向量,而不会修改 vector 的值。
Parameters
- vector : Insight.Vector2 指定向量方向
- maxLength : number 指定向量长度
Distance
javascript
static Distance(a: Vector2, b: Vector2): number;
计算两个二维点之间的距离。
Parameters
- a : Insight.Vector2 点 a 坐标
- b : Insight.Vector2 点 b 坐标
Dot
javascript
static Dot(a: Vector2, b: Vector2): number;
计算两个向量的点积。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
Lerp
javascript
static Lerp(a: Vector2, b: Vector2, t: number): Vector2;
两个向量做插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b。此方法会返回一个全新的向量,而不会修改 a、b 的值。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
- t : number 在 a 到 b 之间做插值
LerpUnclamped
javascript
static LerpUnclamped(a: Vector2, b: Vector2, t: number): Vector2;
两个向量做插值,t 的取值范围不做限制。此方法会返回一个全新的向量,而不会修改 a、b 的值。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
- t : number 在 a 到 b 之间做插值
Max
javascript
static Max(a: Vector2, b: Vector2): Vector2;
返回两个向量每个分量中较大的值组成的新向量。此方法会返回一个全新的向量,而不会修改 a、b 的值。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
Min
javascript
static Min(a: Vector2, b: Vector2): Vector2;
返回两个向量每个分量中较小的值组成的新向量。此方法会返回一个全新的向量,而不会修改 a、b 的值。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
MoveTowards
javascript
static MoveTowards(current: Vector2, target: Vector2, maxDistanceDelta: number): Vector2;
返回从 current 出发,朝向 target,到达与 current 最大距离为 maxDistanceDelta 的点。此方法会返回一个全新的向量,而不会修改 current、target 的值。
Parameters
- current : Insight.Vector2 起点
- target : Insight.Vector2 终点
- maxDistanceDelta : number 与的 current 最大距离
Perpendicular
javascript
static Perpendicular(inDirection: Vector2): Vector2;
返回一个从 inDirection 逆时针旋转 90 度的向量。此方法会返回一个全新的向量,而不会修改 inDirection 的值。
Parameters
- inDirection : Insight.Vector2 旋转起点向量
Reflect
javascript
static Reflect(inDirection: Vector2, inNormal: Vector2): Vector2;
计算入射向量 inDirection 的反射向量。此方法会返回一个全新的向量,而不会修改 inDirection、inNormal 的值。
Parameters
- inDirection : Insight.Vector2 入射向量
- inNormal : Insight.Vector2 法线向量
Scale
javascript
static Scale(a: Vector2, b: Vector2): Vector2;
返回 a 与 b 相乘的结果,a 与 b 对应分量相乘。此方法会返回一个全新的向量,而不会修改 a、b 的值。
Parameters
- a : Insight.Vector2 向量 a
- b : Insight.Vector2 向量 b
SmoothDamp
javascript
static SmoothDamp(current: Vector2, target: Vector2, currentVelocity: Vector2, smoothTime: number, maxSpeed: number, deltaTime: number): Vector2;
将一个点平滑地移动到另一个点。需要在脚本的 Update 函数中手动调用。此方法会返回一个全新的向量,而不会修改 current、target、currentVelocity 的值。
Parameters
- current : Insight.Vector2 当前位置
- target : Insight.Vector2 目标位置
- currentVelocity : Insight.Vector2 当前速度向量
- smoothTime : number 约等于到达目标位置所需的时间
- maxSpeed : number 最大速度值
- deltaTime : number 距离上一次调用该函数的间隔时间,一般为 Insight.Time.deltaTime