使用 Single Line Trace (Raycast) by Channel
LineTraceByChannel 将沿给定的线执行碰撞追踪并返回追踪命中的首个物体(对追踪通道响应)。
以下是设置 SingleLineTraceByChannel 的步骤。
步骤
使用 包括 Starter Content 的 Blueprint First Person 模版创建新项目并打开项目。
在 FirstPersonBP/Blueprints 文件夹中,打开 FirstPersonCharacter 蓝图。
在图表中 单击右键,搜索并添加一个 Event Tick 节点。
这会导致追踪每帧运行。
从执行引脚连出引线,然后搜索 LineTraceByChannel 节点。
按住 Ctrl 键,拖入 FirstPersonCamera 组件。
我们便会从这个摄像机开始追踪。
从 FirstPersonCamera 节点连出引线,添加一个 Get World Location 节点,然后将其连接到追踪的 Start。
再次从 FirstPersonCamera 节点连出引线,添加一个 Get World Rotation 节点。
我们从 FirstPersonCamera 的位置开始追踪,然后获得 FirstPersonCamera 的旋转。
从 Get World Rotation 连出引线并添加一个 Get Forward Vector,然后再从此处连出引线并添加一个 Vector * Float 节点,设为 1500。
获得旋转和向前矢量后,然后将其向外延伸 1500(此值为追踪的长度)。
从 Get World Location 连出引线并添加一个 Vector + Vector 节点,然后按下图所示连接到追踪节点的 End。
我们在此使用 FirstPersonCamera 的位置并将其向外延伸 1500 个单位(基于其旋转和向前矢量)。
在追踪节点上将 Draw Debug Type 设为 For One Frame。
进行游戏查看线条追踪时即可看到一条调试线。
从追踪的执行输出引脚连出引线并添加一个 Print String 节点。
从 Out Hit 引脚连出引线,搜索 Break Hit,然后添加一个 Break Hit Result 节点。
从 Break Hit Result 的 Hit Actor 引脚连出引线,添加一个 To String (Object) 节点并将其连接到 Print String 节点。
点击查看全图。
这样便会把追踪命中的物体输出到屏幕上。
点击 Compile 按钮,然后在编辑器中开始游戏,查看关卡中的立方体。
此处脱离了第一人称视角,便于查看追踪的视觉角度。
追踪命中立方体后,便会把立方体的名称显示到屏幕上。
结果
上例将返回设为对提供的追踪通道产生响应的所有物体,然而有时候可能需要只返回特定的物体。上例中,可使用 Actors to Ignore 引脚(它接收应被追踪无视的 Actor 阵列),但这意味着必须指定需要无视的每个 Actor。
也可执行 LineTraceByObject,只返回特定的物体类型。这样便能以追踪中包含的特定物体集为目标。