Language:
Page Info
Skill Level:
Engine Version:
Share

使用 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 Result 的)Hit Actor 引脚连出引线,添加一个 To String (Object) 节点并将其连接到 Print String 节点。

    点击查看全图。

    这可以让我们调试输出追踪命中的对象。

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

    GHT2B_11.png

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

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

最终结果

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

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