碰撞和追踪总结
关于碰撞的参数:
Simulation Generates Hit Events: 设置是否生成Hit事件。
Generate Overlap Events: 是否生成Overlap重叠事件。
碰撞预设值相当于定义好的模板数据一样,选择不同的预设值下面的碰撞信息不同。
每个Actor都有一个Object Type,值可以为:WorldStatic,WorldDynamic,Pawn,PhysicsBody,Vehicle,Destructible.
追溯响应:
这里设置的值的意思在于当程序调用LineTraceByChannel或者MultiLineTraceByChannel的时候(这两个函数需要指定Trace Channel,值为Visibility或者Camera,其实两个值就是两个通道而已),这里值对于不同Channel做出的不同的响应,忽略,重叠或者阻挡。
LineTraceByChannel 函数返回的是追踪线上第一个阻挡的Actor信息,MultiLineTraceByChannel函数返回的是追踪线到第一次阻挡Actor之间的所有重叠(忽略的不管)的actor信息(当然也包括那个阻挡的actor.);
重新回到Actor设置这个值的意义上:
这里设置不同的值就是告诉引擎,当有关于LineTraceByChannel或者MultiLineTraceByChannel查询的时候,我这个Actor关于不同的Channel的响应是什么样的。
物体响应:
这个好理解,用一个图举例:
这个Actor的ObjectType是WorldDynamic,跟其他WorldStatic,WorldDynamic,PhysicsBody,Destructible是阻挡的,跟其他Pawn,或者Vehicle是可以重叠的。
碰撞的特殊情况:
- 两个(或多个)设为 Block 的 Actors 之间将自然生成 阻挡(Blocking)。然而,执行 命中事件(Event Hit) 需启用 Simulation Generates Hit Events,此功能用于蓝图、可摧毁 Actor、触发器等资源中。
- 将 Actors 设为 Overlap 通常看起来他们将 无视 对方。如未启用 Generate Overlap Events,两种设置在本质上相同。
- 对两个(或多个)相互阻挡的模拟物体而言,需将两者设为对其各自的物体类型进行阻挡。
- 对两个(或多个)模拟物体而言,如一个设为重叠,另一个设为阻挡,两者间将出现重叠,而非阻挡。
- 在物体 阻挡 其他物体时,仍然 可以 产生重叠,尤其是在高速运动状态下。
- 不推荐为物体同时设置碰撞和重叠事件。但可以进行手动调整。
- 如一个物体设为无视,另一个设为重叠,将不会产生重叠事件。
利用LineTraceForObjects 和MultiLineTraceForObjects 可以追踪线上所有满足ObjectType条件的并且Collision Enabled支持查询的Actor(假如设置的是No Collision 或者Physics Only的话,是追踪不到的)。这两个函数只跟Actor的Object Type和 Collision Enabled有关,跟Acotr与其他Actor是忽略,重叠还是阻挡是没有关系的。