Choose your operating system:
Windows
macOS
Linux
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 ,只返回特定的 ObjectTypes 。这样便能以(追踪中包含的)特定物体集为目标。