使用 Single Line Trace (Raycast) by Channel

LineTraceByChannel 将沿给定的线执行碰撞追踪并返回追踪命中的首个物体(对追踪通道响应)。

以下是设置 SingleLineTraceByChannel 的步骤。

步骤

  1. 使用 包括 Starter ContentBlueprint First Person 模版创建新项目并打开项目。

  2. FirstPersonBP/Blueprints 文件夹中,打开 FirstPersonCharacter 蓝图

  3. 在图表中 单击右键,搜索并添加一个 Event Tick 节点。

    GHT2B_1.png

    这会导致追踪每帧运行。

  4. 从执行引脚连出引线,然后搜索 LineTraceByChannel 节点。

    GHT2B_2.png

  5. 按住 Ctrl 键,拖入 FirstPersonCamera 组件。

    GHT2B_3.png

    我们便会从这个摄像机开始追踪。

  6. FirstPersonCamera 节点连出引线,添加一个 Get World Location 节点,然后将其连接到追踪的 Start

  7. 再次从 FirstPersonCamera 节点连出引线,添加一个 Get World Rotation 节点。

    GHT2B_4.png

    我们从 FirstPersonCamera 的位置开始追踪,然后获得 FirstPersonCamera 的旋转。

  8. Get World Rotation 连出引线并添加一个 Get Forward Vector,然后再从此处连出引线并添加一个 Vector * Float 节点,设为 1500

    GHT2B_5.png

    获得旋转和向前矢量后,然后将其向外延伸 1500(此值为追踪的长度)。

  9. Get World Location 连出引线并添加一个 Vector + Vector 节点,然后按下图所示连接到追踪节点的 End

    GHT2B_6.png

    我们在此使用 FirstPersonCamera 的位置并将其向外延伸 1500 个单位(基于其旋转和向前矢量)。

  10. 在追踪节点上将 Draw Debug Type 设为 For One Frame

    GHT2B_7.png

    进行游戏查看线条追踪时即可看到一条调试线。

  11. 从追踪的执行输出引脚连出引线并添加一个 Print String 节点。

    GHT2B_8.png

  12. Out Hit 引脚连出引线,搜索 Break Hit,然后添加一个 Break Hit Result 节点。

    GHT2B_9.png

  13. Break Hit ResultHit Actor 引脚连出引线,添加一个 To String (Object) 节点并将其连接到 Print String 节点。

    点击查看全图。

    这样便会把追踪命中的物体输出到屏幕上。

  14. 点击 Compile 按钮,然后在编辑器中开始游戏,查看关卡中的立方体。

    GHT2B_11.png

    此处脱离了第一人称视角,便于查看追踪的视觉角度。

    追踪命中立方体后,便会把立方体的名称显示到屏幕上。

结果

上例将返回设为对提供的追踪通道产生响应的所有物体,然而有时候可能需要只返回特定的物体。上例中,可使用 Actors to Ignore 引脚(它接收应被追踪无视的 Actor 阵列),但这意味着必须指定需要无视的每个 Actor。

也可执行 LineTraceByObject,只返回特定的物体类型。这样便能以追踪中包含的特定物体集为目标。