工具 / HitResult
HitResult Class
命中结果,包含关于轨迹的一次命中的信息,例如撞击点和该点的表面法线。
使用示例:创建一个名为"HitResultExample"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,并在场景中创建一个模型放置在200, 10, 0的位置,运行游戏,你将在日志中看到射线检测到的HitResult信息数组。代码如下:ts
const result = QueryUtil.lineTrace(new Vector(100), new Vector(1000), true, true);
@Component
export default class HitResultExample extends Script {
protected onStart(): void {
if (this.isRunningClient()) {
// 开始位置
let startLocation = new Vector(100, 10, 100);
// 结束位置
let endLocation = new Vector(1000, 10, 100);
// 返回的HitResult数组
const result = QueryUtil.lineTrace(startLocation, endLocation, true, true);
result.forEach(element => {
// 通过HitResult访问返回值gameObject的名字
console.log(`命中GameObject的名字: ${element.gameObject.name}`);
});
}
}
}
const result = QueryUtil.lineTrace(new Vector(100), new Vector(1000), true, true);
@Component
export default class HitResultExample extends Script {
protected onStart(): void {
if (this.isRunningClient()) {
// 开始位置
let startLocation = new Vector(100, 10, 100);
// 结束位置
let endLocation = new Vector(1000, 10, 100);
// 返回的HitResult数组
const result = QueryUtil.lineTrace(startLocation, endLocation, true, true);
result.forEach(element => {
// 通过HitResult访问返回值gameObject的名字
console.log(`命中GameObject的名字: ${element.gameObject.name}`);
});
}
}
}
Table of contents
Properties
blockingHit: boolean |
---|
是否击中了物体,如果发生了碰撞则为 true, 否则为 false |
boneName: string |
碰撞的骨骼名称 |
distance: number |
距离,traceStart到location的距离 |
gameObject: GameObject |
命中的GameObject |
impactNormal: Vector |
世界空间中被扫掠击中的对象(如果有)的法线。例如,如果球体撞击平面,这是一个从平面指向的规范化向量。在与曲面的角或边碰撞的情况下,通常选择“最相反”的法线(与查询方向相反)。 |
impactPoint: Vector |
轨迹形状(长方体、球体、光线等)与受影响对象的实际接触在世界空间中的位置。示例:对于球体跟踪测试,这是球体表面接触其他对象的点。 |
normal: Vector |
世界空间中被扫过的物体的法线。等于线路测试的ImpactNormal。这是为胶囊和球体计算的,否则将与ImpactNormal相同。示例:对于球体轨迹测试,这是指向撞击点处球体中心的归一化矢量。 |
position: Vector |
世界空间中的位置,如果发生碰撞,移动的形状将最终抵靠受影响的对象。等于线路测试的冲击点。示例:对于球体跟踪测试,这是当球体接触其他对象时,球体中心所在的点。对于扫掠移动(但不是查询),这可能不等于形状的最终位置,因为命中会稍微向后拉,以防止精度问题与另一个曲面重叠。 |
time: number |
这是沿追踪方向的命中时间,范围介于[0.0到1.0]之间。如未命中,将返回1.0。 |
traceEnd: Vector |
碰撞检测的终点位置 |
traceStart: Vector |
碰撞检测的起点位置 |
Properties
blockingHit
• blockingHit: boolean
是否击中了物体,如果发生了碰撞则为 true, 否则为 false
boneName
• boneName: string
碰撞的骨骼名称
distance
• distance: number
距离,traceStart到location的距离
gameObject
• gameObject: GameObject
命中的GameObject
impactNormal
• impactNormal: Vector
世界空间中被扫掠击中的对象(如果有)的法线。例如,如果球体撞击平面,这是一个从平面指向的规范化向量。在与曲面的角或边碰撞的情况下,通常选择“最相反”的法线(与查询方向相反)。
impactPoint
• impactPoint: Vector
轨迹形状(长方体、球体、光线等)与受影响对象的实际接触在世界空间中的位置。示例:对于球体跟踪测试,这是球体表面接触其他对象的点。
normal
• normal: Vector
世界空间中被扫过的物体的法线。等于线路测试的ImpactNormal。这是为胶囊和球体计算的,否则将与ImpactNormal相同。示例:对于球体轨迹测试,这是指向撞击点处球体中心的归一化矢量。
position
• position: Vector
世界空间中的位置,如果发生碰撞,移动的形状将最终抵靠受影响的对象。等于线路测试的冲击点。示例:对于球体跟踪测试,这是当球体接触其他对象时,球体中心所在的点。对于扫掠移动(但不是查询),这可能不等于形状的最终位置,因为命中会稍微向后拉,以防止精度问题与另一个曲面重叠。
time
• time: number
这是沿追踪方向的命中时间,范围介于[0.0到1.0]之间。如未命中,将返回1.0。
traceEnd
• traceEnd: Vector
碰撞检测的终点位置
traceStart
• traceStart: Vector
碰撞检测的起点位置