当我们需要处理碰撞矩阵,或者调用接口投射射线进行检测等,为了区分哪些对象可以被射线检测到,哪些对象忽略,就需要用到channel。
1.Channel 简介
在UE5中,一个对象的channel可以在Physics下查看:
设置成custom就可以进行修改:
如果要自己添加预设,可以在Project Settings->Collision处进行设置,包括增加channel:
注意,修改完Project Settings中的碰撞信息后,需要重启UE工程才会生效。
此外,channel分为Object Channel与Trace Channel,它们的意义如下:
- Object Channel - 用于对象与对象间的碰撞,如A对象碰到B对象会不会触发碰撞事件。
- Trace Channel - 用于调用接口进行射线查询、球体查询等,可直接设置查询的Trace Channel。
2.蓝图调用Trace接口
下面演示一下蓝图调用Trace接口。
首先确保创建了一个Trace Channel,并且指定这个Channel会对哪个层产生Block,然后新建一个Actor蓝图,要用这个Actor的Forward方向发出射线进行检测,蓝图如下:
上述蓝图在Tick函数中执行,因为设置了Draw Debug Type函数所以会绘制调试信息,运行后如下:
3.蓝图调用Multi Trace接口
除了各类Trace By Channel接口外,还有Multi Trace…接口,使用这类接口时需要将Channel的预设设置为Overlap,而不是Block,否则即使是多对象检测,返回的还是单个结果。
此时在地面加一个方块,以进行测试,蓝图检测处需去掉Blocking Hit判断,结果如下:
可以发现,通过这个接口,返回了多个投射检测结果。