在本页中,我们将使用 OnComponentHit 和 Event Hit 事件(Events) 以伤害和撕裂一个可破坏网格(Destructible Mesh), 同时在命中位置施加冲力来推动可破坏对象,模拟被抛射物击中的效果并在命中位置施加作用力。
在本指南中,我们将使用 Blueprint First Person Template 项目并启用 Starter Content。
- 进入项目的 Content Browser,前往 Content/Geometry/Meshes 文件夹。
- Right-click 1M_Cube 静态网格并选择 Create Destructible Mesh。
我们将通过这个静态网格创建出一个可破坏网格,从而在它被击中时,我们将可以将其撕裂并导致其解体。
- 在可破坏网格编辑器中,单击 Fracture Mesh 按钮,然后 Save 并关闭窗口。
- Right-click 新建的可破坏网格资产,然后在 Asset Actions 中选择 Create Blueprint Using This...
一定要为新建的蓝图选择一个保存位置,并为其命名。
- 在新蓝图的蓝图编辑器中,进入 Components 窗口并选择 Destructible 组件。
- 在 Details 面板的 Physics 中,选中 Simulate Physics 复选框。
现在,该蓝图将可以模拟物理效果。
- 在 Details 面板底部的 Events 下单击 OnComponentHit 事件。
这样会添加一个新的节点到事件图表(Event Graph)并打开此图表。
- Left-click 并拖开 Other Actor 针,然后搜索并添加 Cast To FirstPersonProjectile 节点。
我们将 蓝图中的转换 到另一个名为 FirstPersonProjectile 的蓝图,并确保在我们击中可破坏网格时, 的确上是 FirstPersonProjectile 蓝图击中了它。如果是这样的话,我们就可以应用其他脚本来撕裂网格并使之解体。否则就什么也不做。
- 拖开 Hit 针并添加一个 Break Hit Result 节点。
我们可以利用 Break Hit Result 节点访问所有种类的打击信息及其自身信息。
- 从 Break Hit Result 拖出 Hit Actor 并添加 Apply Point Damage 节点。
- 在 Apply Point Damage 节点上,将 Base Damage 设置为 100 并将 Damage Type Class 设置为 Damage Type。
Apply Point Damage 节点不仅能让我们指定造成的伤害量,还能指定施加伤害的位置。
- 在 Apply Point Damage 节点上,按以下方式连接其余的线。
连接好所有的线之后,您的图表应当与上面相同。
- Compile 并 Save,然后关闭蓝图。
- 将蓝图从 Content Browser 拖动到关卡。
- 单击 Play 在编辑器中开始运行,然后用 Left-mouse 按钮向立方体发射一个抛射物。
当您在编辑器中运行程序时,您会发现在您发射抛射物并击中立方体时,会对立方体造成伤害并使之解体,同时在其命中位置施加冲力,使之朝着相应的方向飞行。 施加的作用力大小是在 FirstPersonProjectile 蓝图中定义,后者通过 Event Hit 节点确定抛射物在何时真正击中了某个物体。
- 在 Content/FirstPersonBP/Blueprints 文件夹中,打开 FirstPersonProjectile 蓝图。
单击图像可查看大图。
该蓝图中的脚本,可查看被击中的对象是否在模拟物理效果(我们已在立方体蓝图中设置为 true)。如果正常模拟, 它将会在击中的位置施加一个冲力(力量大小是在绿色框内定义,我们已经将值减少到 50)。您可以调整这个值来增加/减少命中时施加的冲力大小。