Skip to content
QueryUtil

工具 / QueryUtil

QueryUtil Class

射线检测工具

Table of contents

Methods

boxOverlap(boxCenter: Vector, boxExtent: Vector, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): GameObject[]
矩形范围检测
boxTrace(start: Vector, end: Vector, halfSize: Vector, orientation: Rotation, multiTrace?: boolean, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): HitResult[]
盒体射线检测
capsuleOverlap(capsuleCenter: Vector, radius: number, halfHeight: number, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): GameObject[]
胶囊体范围检测
capsuleTrace(start: Vector, end: Vector, radius: number, halfHeight: number, multiTrace?: boolean, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): HitResult[]
胶囊体射线检测
lineTrace(start: Vector, end: Vector, multiTrace?: boolean, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, traceSkeletonOnly?: boolean, source?: GameObject): HitResult[]
射线检测
sphereOverlap(sphereCenter: Vector, sphereRadius: number, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): GameObject[]
球形范围检测
sphereTrace(start: Vector, end: Vector, radius: number, multiTrace?: boolean, drawDebug?: boolean, objectsToIgnore?: string[], ignoreByType?: boolean, source?: GameObject): HitResult[]
球体射线检测

Methods

boxOverlap

Static boxOverlap(boxCenter, boxExtent, drawDebug?, objectsToIgnore?, ignoreByType?, source?): GameObject[]

矩形范围检测

Parameters

boxCenter Vector矩形中心位置
boxExtent Vector盒体的大小
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象的GUID数组 default:[] range:不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

GameObject[]GameObject数组
使用示例: 如下示例展示使用矩形范围检测的基本流程
ts
const goList = QueryUtil.boxOverlap(new mw.Vector(0,0,0), new mw.Vector(1000,0,0), true);
for (const item of goList) {
    // item: 检测到的对象
}
const goList = QueryUtil.boxOverlap(new mw.Vector(0,0,0), new mw.Vector(1000,0,0), true);
for (const item of goList) {
    // item: 检测到的对象
}

boxTrace

Static boxTrace(start, end, halfSize, orientation, multiTrace?, drawDebug?, objectsToIgnore?, ignoreByType?, source?): HitResult[]

盒体射线检测

Parameters

start Vector起始位置
end Vector结束位置
halfSize Vector盒体半长宽高
orientation Rotation盒体朝向
multiTrace? boolean是否穿透检测 default:false
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象guid数组 default:[] range: 不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

HitResult[]HitResult数组
使用示例: 如下示例展示使用盒体射线检测的基本流程
ts
const ResultList = QueryUtil.boxTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), new mw.Vector(10,10,10), new mw.Rotation(0,0,0), true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.boxTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), new mw.Vector(10,10,10), new mw.Rotation(0,0,0), true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}

capsuleOverlap

Static capsuleOverlap(capsuleCenter, radius, halfHeight, drawDebug?, objectsToIgnore?, ignoreByType?, source?): GameObject[]

胶囊体范围检测

Parameters

capsuleCenter Vector胶囊体中心位置
radius number胶囊体半径 range: 不做限制,但是请使用合适的半径尺度。 type: 浮点型
halfHeight number胶囊体半高 range: 不做限制,但是请使用合适的尺度。 type: 浮点型
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象的GUID数组 default:[] range: 不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

GameObject[]GameObject数组
使用示例: 如下示例展示使用圆柱范围检测的基本流程
ts
const ResultList = QueryUtil.capsuleOverlap(new mw.Vector(0,0,0), 100, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.capsuleOverlap(new mw.Vector(0,0,0), 100, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}

capsuleTrace

Static capsuleTrace(start, end, radius, halfHeight, multiTrace?, drawDebug?, objectsToIgnore?, ignoreByType?, source?): HitResult[]

胶囊体射线检测

Parameters

start Vector起始位置
end Vector结束位置
radius number胶囊体半径 range: 不做限制,但是请使用合适的半径尺度。 type: 浮点型
halfHeight number胶囊体半高 range: 不做限制,但是请使用合适的尺度。 type: 浮点型
multiTrace? boolean是否穿透检测 default:false
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象guid数组 default:[] range: 不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

HitResult[]HitResult数组
使用示例: 如下示例展示使用胶囊体射线检测的基本流程
ts
const ResultList = QueryUtil.capsuleTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), 5, 10, true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.capsuleTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), 5, 10, true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}

lineTrace

Static lineTrace(start, end, multiTrace?, drawDebug?, objectsToIgnore?, ignoreByType?, traceSkeletonOnly?, source?): HitResult[]

射线检测

Parameters

start Vector起始位置
end Vector结束位置
multiTrace? boolean是否穿透检测 default:false
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象guid数组 default:[] range: 不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
traceSkeletonOnly? boolean是否进行具体部位的检测 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

HitResult[]HitResult数组
使用示例: 如下示例展示使用射线检测的基本流程
ts
const ResultList = QueryUtil.lineTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), true, false, [], false, gameObject, false);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.lineTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), true, false, [], false, gameObject, false);
for (const item of ResultList) {
    // item: 检测到的对象
}

sphereOverlap

Static sphereOverlap(sphereCenter, sphereRadius, drawDebug?, objectsToIgnore?, ignoreByType?, source?): GameObject[]

球形范围检测

Parameters

sphereCenter Vector球体中心位置
sphereRadius number球体半径 range: 不做限制,但是请使用合适的半径尺度。 type: 浮点型
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象的GUID数组 default:[] range:不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

GameObject[]GameObject数组
使用示例: 如下示例展示使用球形范围检测的基本流程
ts
const ResultList = QueryUtil.sphereOverlap(new mw.Vector(0,0,0), 100, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.sphereOverlap(new mw.Vector(0,0,0), 100, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}

sphereTrace

Static sphereTrace(start, end, radius, multiTrace?, drawDebug?, objectsToIgnore?, ignoreByType?, source?): HitResult[]

球体射线检测

Parameters

start Vector起始位置
end Vector结束位置
radius number球体半径 range: [0, +∞] 但是请使用合适的半径尺度。 type: 浮点型
multiTrace? boolean是否穿透检测 default:false
drawDebug? boolean是否可视化绘制 default:false
objectsToIgnore? string[]屏蔽对象guid数组 default:[] range: 不做限制
ignoreByType? boolean是否按传入对象的类型进行屏蔽 default:false
source? GameObject发起检测的对象(检测源不参与检测) default:null

Returns

HitResult[]HitResult数组
使用示例: 如下示例展示使用球体射线检测的基本流程
ts
const ResultList = QueryUtil.sphereTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), 5, true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}
const ResultList = QueryUtil.sphereTrace(new mw.Vector(0,0,0), new mw.Vector(300,0,0), 5, true, false, [], false, gameObject);
for (const item of ResultList) {
    // item: 检测到的对象
}