主题
Region3
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | common |
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)
关联类型
函数 (2)
New
签名:New(min: Vector3, max: Vector3) -> Region3
Region3.New 用于构造一个 Region3 实例,接收 min 与 max 两个 Vector3 参数,分别表示区域范围的最小端与最大端,并返回对应的 Region3 对象。
| 参数 | 类型 | 说明 |
|---|---|---|
min | Vector3 | - |
max | Vector3 | - |
返回值 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
将当前区域按指定分辨率扩展为对齐网格的更大区域。
| 参数 | 类型 | 说明 |
|---|---|---|
resolution | Float | - |
返回值 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)