Language:
Page Info
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

在蓝图中使用 OnHit 事件

在本页中,我们将使用 OnComponentHitEvent Hit 事件(Events) 以伤害和撕裂一个可破坏网格(Destructible Mesh), 同时在命中位置施加冲力来推动可破坏对象,模拟被抛射物击中的效果并在命中位置施加作用力。

在本指南中,我们将使用 Blueprint First Person Template 项目并启用 Starter Content

  1. 进入项目的 Content Browser,前往 Content/Geometry/Meshes 文件夹。

  2. Right-click 1M_Cube 静态网格并选择 Create Destructible Mesh

    OnHit1.png

    我们将通过这个静态网格创建出一个可破坏网格,从而在它被击中时,我们将可以将其撕裂并导致其解体。

  3. 在可破坏网格编辑器中,单击 Fracture Mesh 按钮,然后 Save 并关闭窗口。

    OnHit2.png

  4. Right-click 新建的可破坏网格资产,然后在 Asset Actions 中选择 Create Blueprint Using This...

    OnHit3.png

    一定要为新建的蓝图选择一个保存位置,并为其命名。

  5. 在新蓝图的蓝图编辑器中,进入 Components 窗口并选择 Destructible 组件。

  6. Details 面板的 Physics 中,选中 Simulate Physics 复选框。

    OnHit4.png

    现在,该蓝图将可以模拟物理效果。

  7. Details 面板底部的 Events 下单击 OnComponentHit 事件。

    OnHit5.png

    这样会添加一个新的节点到事件图表(Event Graph)并打开此图表。

    OnHit6.png

  8. Left-click 并拖开 Other Actor 针,然后搜索并添加 Cast To FirstPersonProjectile 节点。

    OnHit7.png

    我们将 蓝图中的转换 到另一个名为 FirstPersonProjectile 的蓝图,并确保在我们击中可破坏网格时, 的确上是 FirstPersonProjectile 蓝图击中了它。如果是这样的话,我们就可以应用其他脚本来撕裂网格并使之解体。否则就什么也不做。

  9. 拖开 Hit 针并添加一个 Break Hit Result 节点。

    OnHit8.png

    我们可以利用 Break Hit Result 节点访问所有种类的打击信息及其自身信息。

  10. Break Hit Result 拖出 Hit Actor 并添加 Apply Point Damage 节点。

  11. Apply Point Damage 节点上,将 Base Damage 设置为 100 并将 Damage Type Class 设置为 Damage Type

    OnHit9.png

    Apply Point Damage 节点不仅能让我们指定造成的伤害量,还能指定施加伤害的位置。

  12. Apply Point Damage 节点上,按以下方式连接其余的线。

    OnHit10.png

    连接好所有的线之后,您的图表应当与上面相同。

  13. CompileSave,然后关闭蓝图。

  14. 将蓝图从 Content Browser 拖动到关卡。

    OnHit11.png

  15. 单击 Play 在编辑器中开始运行,然后用 Left-mouse 按钮向立方体发射一个抛射物。

    当您在编辑器中运行程序时,您会发现在您发射抛射物并击中立方体时,会对立方体造成伤害并使之解体,同时在其命中位置施加冲力,使之朝着相应的方向飞行。 施加的作用力大小是在 FirstPersonProjectile 蓝图中定义,后者通过 Event Hit 节点确定抛射物在何时真正击中了某个物体。

  16. Content/FirstPersonBP/Blueprints 文件夹中,打开 FirstPersonProjectile 蓝图。

    单击图像可查看大图。

    该蓝图中的脚本,可查看被击中的对象是否在模拟物理效果(我们已在立方体蓝图中设置为 true)。如果正常模拟, 它将会在击中的位置施加一个冲力(力量大小是在绿色框内定义,我们已经将值减少到 50)。您可以调整这个值来增加/减少命中时施加的冲力大小。