Vector3
三维向量类型,支持数学运算与操作符重载。与 脚本内存 API 总览 中列出的 joaat、script_global 等同属一组常用类型。
Vector3.new(x?, y?, z?)Vector3
创建 Vector3。不传参数时为 (0, 0, 0);可只传部分分量。
| 参数 | 类型 | 说明 |
|---|---|---|
| x, y, z | float? | 各分量;均为可选 |
local v = Vector3.new(100, 200, 50)
log.info(v.x .. ", " .. v.y .. ", " .. v.z)字段
| 字段 | 类型 | 说明 |
|---|---|---|
| x | float | X 分量 (可读写) |
| y | float | Y 分量 (可读写) |
| z | float | Z 分量 (可读写) |
操作符
| 操作符 | 示例 | 说明 |
|---|---|---|
| + | v1 + v2 | 向量相加 |
| - | v1 - v2 | 向量相减 |
| * | v * 2.0 | 标量缩放 |
| / | v / 2.0 | 标量除法 |
| - (unary) | -v | 取反 |
| == | v1 == v2 | 相等比较 |
| tostring | tostring(v) | 格式化输出 |
方法
:length()float
返回向量长度 (模)。
:length_squared()float
返回长度的平方,避免开方运算,适合距离比较。
:distance(other)float
返回到另一个 Vector3 的距离。
| 参数 | 类型 | 说明 |
|---|---|---|
| other | Vector3 | 另一个向量 |
:dot(other)float
点积。
| 参数 | 类型 | 说明 |
|---|---|---|
| other | Vector3 | 右操作向量 |
:cross(other)Vector3
叉积,返回新的 Vector3。
| 参数 | 类型 | 说明 |
|---|---|---|
| other | Vector3 | 右操作向量 |
:normalize()Vector3
返回归一化后的单位向量。零向量返回 (0, 0, 0)。
-- 完整示例
local a = Vector3.new(100, 200, 50)
local b = Vector3.new(110, 210, 60)
local dist = a:distance(b)
local dir = (b - a):normalize()
local scaled = a * 2.0
log.info(tostring(dir)) -- "Vector3(0.5774, 0.5774, 0.5774)"