一、Event Hit 节点简介
Event Hit(也称 On Actor Hit)是虚幻引擎蓝图中的碰撞事件节点,当Actor与阻挡物体发生物理碰撞时触发执行。它通常用于:
-
子弹/投射物命中敌人时造成伤害
-
物体撞击地面时播放特效或音效
-
角色碰撞墙壁时触发特定逻辑
触发条件:只要碰撞双方中至少一方的碰撞设置中勾选了 “Simulation Generates Hit Events” ,Event Hit 就会被触发。如果使用带 Sweep 的运动(如 Set Location with Sweep),即使未勾选该选项也会触发。
二、完整案例:投射物击中立方体(变色 + 受力)
本案例将创建一个可被投射物击中的立方体,命中后立方体变红并受力弹开。
步骤1:创建项目
-
启动虚幻引擎5,点击 “游戏”(Games) → “第一人称”(First Person)
-
选择 “蓝图”(Blueprint) 项目类型
-
将项目命名为 “OnHit” ,点击创建
步骤2:创建红色材质
-
在 内容浏览器 中,导航到
LevelPrototyping/Materials文件夹 -
找到
MI_SolidBlue材质,按Ctrl+D复制一份 -
将副本重命名为
MI_Solid_Red -
双击打开
MI_Solid_Red,将 “基础颜色”(Base Color) 改为红色 -
保存材质
步骤3:创建立方体 Actor 蓝图
-
在内容浏览器中,导航到
LevelPrototyping/Meshes文件夹 -
右键点击
SM_ChamferCube静态网格体 → “资源操作”(Asset Actions) → “使用此资源创建蓝图”(Create Blueprint Using This…) -
将蓝图命名为
BP_Cube,选择保存位置
步骤4:设置碰撞属性(关键步骤)
打开 BP_Cube 蓝图:
-
在 组件(Components) 面板中,选中静态网格体组件
-
在右侧 细节(Details) 面板中,找到 “物理”(Physics) 分类
-
将 “模拟物理”(Simulate Physics) 设为
True -
在 “碰撞”(Collision) 分类中,勾选 “模拟生成命中事件”(Simulation Generates Hit Events)
-
编译并保存蓝图
关键说明:
Simulation Generates Hit Events必须勾选,物理模拟期间的碰撞才能触发 Hit 事件。对于投射物本身,同样需要勾选此选项。
步骤5:添加 Event Hit 事件节点
在 BP_Cube 蓝图中:
-
在 组件(Components) 面板中,右键点击静态网格体组件
-
选择 “添加事件”(Add Event) → “On Component Hit(StaticMeshComponent)”
-
这会自动在事件图表中创建
OnComponentHit节点
提示:也可以在事件图表中右键空白处,搜索 “Event Hit” 直接放置节点。
步骤6:编写命中逻辑
在事件图表中连接如下节点:
-
从
Other Actor引脚拖出 → 添加 “Cast To FirstPersonProjectile” 节点(判断是否被投射物击中) -
从
Hit引脚拖出 → 添加 “Break Hit Result” 节点(分解命中结果数据) -
从 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输出
-
-
编译保存
步骤7:创建受伤响应函数
-
在 “我的蓝图”(My Blueprint) 面板中,点击 “函数”(Functions) 旁的 “+” 按钮,创建新函数命名为
OnTakeDamage -
在函数图表中:
-
从组件面板拖入 静态网格体组件 引用
-
从静态网格体引脚拖出 → 添加 “Set Material” 节点
-
将
Material参数设为之前创建的MI_Solid_Red材质
-
-
在事件图表的
Apply Point Damage节点之后,调用这个OnTakeDamage函数 -
编译保存
步骤8:测试
-
将
BP_Cube拖入关卡中 -
运行游戏(按
Alt+P) -
发射投射物击中立方体,观察效果
三、Event Hit 节点常用输出引脚
| 引脚名称 | 类型 | 说明 |
|---|---|---|
| Other | Actor | 参与碰撞的另一个 Actor |
| Other Comp | 组件 | 参与碰撞的另一个组件 |
| Hit Location | Vector | 碰撞发生的世界位置 |
| Hit Normal | Vector | 碰撞法线方向 |
| Normal Impulse | Vector | 碰撞冲击力 |
| Hit | Hit Result 结构体 | 包含所有命中数据的完整结构体 |
四、常见应用场景扩展
1. 投射物命中敌人(伤害 + 特效)
Event Hit → Actor Has Tag(检查 Other 是否有 "Enemy" 标签)
→ Branch
→ True: Apply Damage + Spawn Niagara特效 + 相机震动
→ False: 仅播放命中特效
→ Destroy Actor(销毁投射物)[reference:30]
2. 物体粘附(命中后附着)
Event Hit → Attach Actor to Actor
→ Other 连接到 Parent Actor
→ Self 连接到 Target[reference:31]
3. 击中变色(简单交互)
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 的勾选状态。只要满足条件,这个事件就能可靠地响应物理碰撞。
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容