使用 OnHit 事件

关于如何在蓝图或代码中使用 OnHit 事件的操作指南。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

如果你创建的游戏要对玩家、敌人或物件造成某一类型的伤害,你可能需要确定它们是否被某些东西击中,如果击中,还要确定谁是打击者,撞击点在哪里,或是其他与检测到的攻击有关的信息。击中事件(Event Hit)事件将提供此类信息,如果发生碰撞则提供更多信息,这时你可以用数据来驱动游戏中的变化,无论是要影响生命值、摧毁物件还是其他与游戏性相关的动作。

实现指南

在本指南中,我们将使用 OnComponentHit Event Hit 事件 以伤害和撕裂一个可破坏网格(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. Compile Save ,然后关闭蓝图。

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

    OnHit11.png

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

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

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

    点击查看大图。

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

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消