What
UE中碰撞查询有两种不同的接口。下面以line举例:
- 想查询从A点到B点有哪些物体可以响应某个channel,返回这些物体。称为TraceByChannel。传参为ETraceTypeQuery枚举类型。

- 想查询从A点到B点的有没有指定物体类型的物体,并返回他们。称为TraceByObjectType。传参为EObjectTypeQuery枚举类型。


但在内存里,上面两种枚举类型会以ECollisionChannel的形式存在。
Why
这是因为UE希望在蓝图里区分开这两种类型。但实际使用时,会将两者和ECollisionChannel映射起来。
How
在内存里,实际都会转换成ECollisionChannel,但使用上还是有所区别。这个区别来自它们用法上。对于TraceByChannel,可以返回Touch/Block的物体;但对于TraceByObjectType,所有的物体都认为时Block的(如果是Trace而非overlap)。因为它查询的是有没有,所以不关心响应。
创建Filter数据时,也会相应的不一样:
