虚幻引擎 Event Hit 节点

一、Event Hit 节点简介

Event Hit(也称 On Actor Hit)是虚幻引擎蓝图中的碰撞事件节点,当Actor与阻挡物体发生物理碰撞时触发执行。它通常用于:

  • 子弹/投射物命中敌人时造成伤害

  • 物体撞击地面时播放特效或音效

  • 角色碰撞墙壁时触发特定逻辑

触发条件:只要碰撞双方中至少一方的碰撞设置中勾选了 “Simulation Generates Hit Events” ,Event Hit 就会被触发。如果使用带 Sweep 的运动(如 Set Location with Sweep),即使未勾选该选项也会触发


二、完整案例:投射物击中立方体(变色 + 受力)

本案例将创建一个可被投射物击中的立方体,命中后立方体变红并受力弹开

步骤1:创建项目

  1. 启动虚幻引擎5,点击 “游戏”(Games) → “第一人称”(First Person)

  2. 选择 “蓝图”(Blueprint) 项目类型

  3. 将项目命名为 “OnHit” ,点击创建

步骤2:创建红色材质

  1. 在 内容浏览器 中,导航到 LevelPrototyping/Materials 文件夹

  2. 找到 MI_SolidBlue 材质,按 Ctrl+D 复制一份

  3. 将副本重命名为 MI_Solid_Red

  4. 双击打开 MI_Solid_Red,将 “基础颜色”(Base Color) 改为红色

  5. 保存材质

步骤3:创建立方体 Actor 蓝图

  1. 在内容浏览器中,导航到 LevelPrototyping/Meshes 文件夹

  2. 右键点击 SM_ChamferCube 静态网格体 → “资源操作”(Asset Actions) → “使用此资源创建蓝图”(Create Blueprint Using This…)

  3. 将蓝图命名为 BP_Cube ,选择保存位置

步骤4:设置碰撞属性(关键步骤)

打开 BP_Cube 蓝图:

  1. 在 组件(Components) 面板中,选中静态网格体组件

  2. 在右侧 细节(Details) 面板中,找到 “物理”(Physics) 分类

  3. 将 “模拟物理”(Simulate Physics) 设为 True

  4. 在 “碰撞”(Collision) 分类中,勾选 “模拟生成命中事件”(Simulation Generates Hit Events)

  5. 编译并保存蓝图

关键说明Simulation Generates Hit Events 必须勾选,物理模拟期间的碰撞才能触发 Hit 事件。对于投射物本身,同样需要勾选此选项

步骤5:添加 Event Hit 事件节点

在 BP_Cube 蓝图中:

  1. 在 组件(Components) 面板中,右键点击静态网格体组件

  2. 选择 “添加事件”(Add Event) → “On Component Hit(StaticMeshComponent)”

  3. 这会自动在事件图表中创建 OnComponentHit 节点

提示:也可以在事件图表中右键空白处,搜索 “Event Hit” 直接放置节点

步骤6:编写命中逻辑

在事件图表中连接如下节点

  1. 从 Other Actor 引脚拖出 → 添加 “Cast To FirstPersonProjectile” 节点(判断是否被投射物击中)

  2. 从 Hit 引脚拖出 → 添加 “Break Hit Result” 节点(分解命中结果数据)

  3. 从 Break Hit Result 的 Hit Actor 引脚拖出 → 添加 “Apply Point Damage” 节点:

    • Base Damage 设为 100.0

    • Damage Type Class 选择 Damage Type

    • Hit from Direction 连接到 Break Hit Result 的 Impact Point

    • Hit Info 连接到 Hit 引脚

    • Damage Causer 连接到 Cast 节点的 As BP First Person Projectile 输出

  4. 编译保存

步骤7:创建受伤响应函数

  1. 在 “我的蓝图”(My Blueprint) 面板中,点击 “函数”(Functions) 旁的 “+” 按钮,创建新函数命名为 OnTakeDamage

  2. 在函数图表中:

    • 从组件面板拖入 静态网格体组件 引用

    • 从静态网格体引脚拖出 → 添加 “Set Material” 节点

    • 将 Material 参数设为之前创建的 MI_Solid_Red 材质

  3. 在事件图表的 Apply Point Damage 节点之后,调用这个 OnTakeDamage 函数

  4. 编译保存

步骤8:测试

  1. 将 BP_Cube 拖入关卡中

  2. 运行游戏(按 Alt+P

  3. 发射投射物击中立方体,观察效果


三、Event Hit 节点常用输出引脚

引脚名称 类型 说明
Other Actor 参与碰撞的另一个 Actor
Other Comp 组件 参与碰撞的另一个组件
Hit Location Vector 碰撞发生的世界位置
Hit Normal Vector 碰撞法线方向
Normal Impulse Vector 碰撞冲击力
Hit Hit Result 结构体 包含所有命中数据的完整结构体

四、常见应用场景扩展

1. 投射物命中敌人(伤害 + 特效)

text
Event Hit → Actor Has Tag(检查 Other 是否有 "Enemy" 标签)
         → Branch
            → True: Apply Damage + Spawn Niagara特效 + 相机震动
            → False: 仅播放命中特效
         → Destroy Actor(销毁投射物)[reference:30]

2. 物体粘附(命中后附着)

text
Event Hit → Attach Actor to Actor
         → Other 连接到 Parent Actor
         → Self 连接到 Target[reference:31]

3. 击中变色(简单交互)

text
Event Hit → Break Hit Result
         → Hit Actor → Set Material(更改被击中物体的材质)[reference:32]

五、常见问题排查

问题 解决方案
Event Hit 不触发 检查是否勾选了 “Simulation Generates Hit Events”
物理模拟物体不触发 确保 “模拟物理”(Simulate Physics) 为 True
投射物不触发碰撞 投射物的碰撞预设需设为 “Block” 类型,并勾选 Generate Hit Events
被击中物体不需要勾选? 被击中的物体不需要勾选 Simulation Generates Hit Events,勾选的是主动发起碰撞的物体

核心要点:Event Hit 的关键在于碰撞双方的 碰撞响应 设置和 Simulation Generates Hit Events 的勾选状态。只要满足条件,这个事件就能可靠地响应物理碰撞

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容