Choose your operating system:
Windows
macOS
Linux
追踪 提供了一种在关卡中获取有关线段上存在内容的反馈的方法。使用方法是提供两个端点(一个开始位置和一个结束位置),物理系统将"追踪"两个点之间的线段,报告它命中的任何Actor(带碰撞)。本质上,追踪和其他软件包中的 光线投射 或 光线追踪 相同。
无论你是需要知晓一个 Actor 是否能"看见"另一个Actor,确定特定多边形的法线,模拟高速武器,还是需要知晓 Actor 是否已进入一个空间,都可以使用追踪这种可靠而计算开销低的解决方案。本文档介绍虚幻引擎4(UE4)中追踪的基本功能集。
按信道或对象类型追踪
因为追踪使用物理系统,你可以定义需要进行追踪的对象类别。可在两个大类中进行选择:信道和对象类型。信道用于可视性和摄像机等事物,且几乎只和追踪相关。对象类型是场景中带碰撞的Actor物理类型,如Pawn、载具、可破坏物Actor等等。
可根据需要添加更多信道和对象类型。有关具体操作的更多信息,请参阅 为项目添加自定义物体类型 。
返回单个或多个命中
追踪时,你可以选择返回与条件匹配且被追踪命中的第一个项,也可返回与条件匹配且被追踪命中的所有项。
需要特别注意 按信道多重追踪(Multi Trace by Channel) 和 按对象多重追踪(Multi Trace For Objects) 的区别。使用 按信道多重追踪(Muli Trace by Channel) 时,追踪将返回包含第一个 阻挡(Block) 在内的所有 重叠(Overlaps) 。想象射击的子弹穿过高高的草丛,然后击中墙壁。
按对象多重追踪(Multi Trace For Objects) 将返回与追踪查找的对象类型匹配的所有对象,假定组件设置为返回追踪查询。因此它很适合于计算追踪开始和结束之间的对象数量。
命中结果(Hit Result)
追踪命中某个对象时,它将返回 命中结果(Hit Result) 结构体。此结构体在蓝图和C++中都可用,其结构如下:
|
|
使用形状追踪
当线迹追踪无法满足需求时,你可以使用形状追踪来获取想要的结果。例如,你为敌方创建了"视锥",而且你希望检测进入视锥的玩家。线迹追踪可能无法满足需求,因为玩家可以通过躲在线迹追踪的下面来躲避检测。
在这种情况下,你可以使用盒体追踪、胶囊体追踪或球体追踪。
形状追踪的工作原理与线迹追踪相似,你以起始点和结束点为范围搜索并检查碰撞,但是形状追踪具有附加的检查层,因为你在光线投射中将形状用作体积(各种各样)。你可以将形状追踪用作单次追踪或多次追踪,每种追踪的设置方式都与线迹追踪相同,但是你需要提供与你使用的形状的大小(或方向)相关的额外细节。
从追踪获取UV坐标
如果使用Trace Complex,追踪可以返回它命中的Actor的UV坐标。从4.14版起,此功能仅在 静态网格体组件 、 程序式网格体组件 和 BSP 上有效。它 无法 在 骨架网格体组件 上正常工作,因为你追踪的是 物理资源 ,而物理资源不具备UV坐标(即使你选择Trace Complex)。
使用此功能将增大CPU内存使用率,因为UE4需要在主内存中保留顶点位置和UV坐标的额外副本。
启用来自追踪的UV坐标
要启用此功能,请按照下列步骤操作:
-
从 "编辑(Edit)"菜单 中访问 项目设置(Project Settings) 。
-
在 项目设置(Project Settings) 的 "物理(Physics)"部分 中启用 支持来自命中结果的UV(Support UV From Hit Results) 功能。
-
重启编辑器。
重启编辑器之前可以使用此功能查看蓝图 查找碰撞UV(Find Collision UV) 节点,但是当你查看时,此节点仅返回 [0.0, 0.0]。 要让此节点返回正确的UV数据,你必须重启编辑器。
其他功能
追踪还拥有一些小功能,可用于限制其返回的内容,这简化了调试它们的过程。它们能够追踪 复杂碰撞(Complex Collision) (如果静态网格体或程序式网格体启用了它)。如果从 Actor 调用它们,可以通过让 Actor 追踪自身来告知它们忽略所有连接的组件。最后,它们拥有以红色或绿色线条代表追踪的选项,较大的框则代表命中。