Skip to content

Region3 ​

概览 ​

字段值
KindData · 数据 Data
Realmcommon

Region3 表示由两个 Vector3 对角点界定的轴对齐三维区域,并可按指定分辨率向外扩展到网格边界。

适用场景 ​

用于在脚本内部表达三维范围、保存区域配置或执行网格对齐计算;当前公开 Surface 没有接收 Region3 的 PhysicsService 查询参数,具体消费入口应以对应 API 的 Meta 签名为准。

使用要点 ​

先构造 min/max 两个 Vector3,再用 Region3.New(min, max) 或 Region3(min, max) 创建区域;通过 Size 读取尺寸,通过 ExpandToGrid(resolution) 获得向外对齐网格的新区域。

注意事项 ​

Region3 本身不执行物理查询。PhysicsService:GetPartBoundsInBox 接收 CFrame、Vector3 和可选 OverlapParams,不接收 Region3;不要把两种范围表达混用。

代码示例 ​

Region3 构造、Size 读取与网格对齐 ​

lua
-- @runtime client
-- Region3 用两个对角点描述一块轴对齐的立方体区域:minPoint 为最小角,maxPoint 为最大角
local minPoint = Vector3.New(-16, 0, -16)      -- 区域最小角坐标
local maxPoint = Vector3.New(16, 32, 16)       -- 区域最大角坐标
local zone = Region3.New(minPoint, maxPoint)   -- 构造 Region3 实例
print("区域尺寸:", zone.Size.x, zone.Size.y, zone.Size.z)  -- Size 是 Vector3,表示区域的长宽高

-- 将区域边界向外对齐到 4 单位的网格,便于与格子化的关卡数据保持一致
local gridZone = zone:ExpandToGrid(4)
print("网格对齐后尺寸:", gridZone.Size.x, gridZone.Size.y, gridZone.Size.z)

-- 也支持省略 .New 的等价简写构造方式
local triggerZone = Region3(Vector3.New(0, 0, 0), Vector3.New(8, 8, 8))
print("简写构造区域尺寸:", triggerZone.Size.x, triggerZone.Size.y, triggerZone.Size.z)

属性 (1) ​

Name类型默认值说明
SizeVector3-Size 是 Region3 的 Vector3 类型属性,表示该区域在三个坐标轴方向上的尺寸。

关联类型 ​

函数 (2) ​

New ​

签名:New(min: Vector3, max: Vector3) -> Region3

Region3.New 用于构造一个 Region3 实例,接收 min 与 max 两个 Vector3 参数,分别表示区域范围的最小端与最大端,并返回对应的 Region3 对象。

参数类型说明
minVector3-
maxVector3-

返回值 Region3

示例代码

构造 3D 区域

lua
-- @runtime client
local min = Vector3.New(0, 0, 0)
local max = Vector3.New(100, 50, 100)
local region = Region3.New(min, max)
print('区域 Size:', tostring(region.Size))

ExpandToGrid ​

签名:ExpandToGrid(resolution: Float) -> Region3

将当前区域按指定分辨率扩展为对齐网格的更大区域。

参数类型说明
resolutionFloat-

返回值 Region3

示例代码

按格子大小扩展区域

lua
-- @runtime client
-- 构造一个原始区域
local minVec = Vector3(0, 0, 0)
local maxVec = Vector3(10, 10, 10)
local region = Region3(minVec, maxVec)

-- 按格子大小 2.0 扩展区域,使边界对齐到 2.0 的整数倍
local expanded = region:ExpandToGrid(2.0)

-- 输出扩展后的区域尺寸
print("扩展后区域尺寸:", expanded.Size)