虚幻引擎 Event Point Damage 节点

一、核心概念区分

  1. Apply Point Damage(施加点伤害,主动调用节点)

    主动向目标 Actor 发送单点伤害指令,携带命中坐标、骨骼、攻击方、伤害类型等信息。

  2. Event Point Damage(事件点状伤害,被动接收事件)

    当 Actor 被Apply Point Damage命中时,自动触发的内置事件,用于目标处理受伤逻辑(扣血、播放受击动画、部位伤害判定、流血特效)。

  3. 完整流程:武器 / 子弹 → Apply Point Damage → 目标 Actor 触发Event Point Damage → 执行受伤逻辑。

二、前置准备(全部操作步骤)

步骤 1:新建第一人称空白项目

  1. 启动 Epic Launcher → 虚幻引擎 5 → 新建项目
  2. 分类:游戏 → 第一人称 → 蓝图
  3. 设置项目名称、存储路径,点击创建。

步骤 2:创建伤害类型资产(Damage Type)

用于区分子弹、爆炸、近战等不同伤害,在 Event Point Damage 中读取。
  1. 内容浏览器右键 → 基础资源 → 伤害类型(Damage Type)
  2. 命名DT_Bullet(子弹伤害),双击打开可自定义伤害标签、物理冲击参数。

步骤 3:改造子弹蓝图(发送 Apply Point Damage)

默认项目自带BP_Projectile子弹蓝图,修改命中逻辑发送点伤害:
  1. 内容浏览器打开FirstPerson/Blueprints/BP_Projectile
  2. 找到默认On Component Hit事件
  3. 蓝图连线逻辑(子弹命中发送伤害):
  • On Component Hit → 执行线 → Break Hit Result(拆解命中信息)
  • Break Hit Result.Hit Actor → 接入Apply Point Damage.Damaged Actor(受伤目标)
  • Break Hit Result.Impact PointHit from Direction(命中坐标)
  • On Component Hit.Hit引脚 → Hit Info(完整命中数据)
  • Apply Point Damage.Event Instigator = 玩家 Pawn(Get Player Pawn)
  • Apply Point Damage.Damage Causer = self(自身子弹)
  • Base Damage设为35(单发子弹伤害)
  • Damage Type Class选择刚才创建的DT_Bullet
  1. 追加逻辑:命中后 Destroy Actor(销毁子弹),编译保存。

步骤 4:创建可受伤敌人蓝图(接收 Event Point Damage)

新建敌人 BP,用于接收Event Point Damage事件处理受伤:
  1. 内容浏览器右键 → 蓝图类 → Character,命名BP_Enemy
    • Health:默认值100,可编辑、显示眼睛打开
    • MaxHealth:默认值100
      打开蓝图 → 我的蓝图 → 变量,新建 2 个浮点变量:
  2. 切换到事件图表,空白处右键搜索添加:Event Point Damage(核心接收事件)

Event Point Damage 全部引脚说明

表格
输出引脚 作用
Damage 本次收到的伤害数值(Float)
Damage Type 伤害类型资产引用
Hit Location 命中世界坐标(生成流血特效)
Hit Normal 命中法线(控制特效朝向)
Hit Component 被击中的模型组件
Bone Name 命中骨骼名(区分头 / 身体 / 四肢部位伤害)
Shot From Direction 攻击者方向(击退敌人)
Instigated By 伤害发起者(玩家)
Damage Causer 伤害载体(子弹 / 武器)
Hit Info 完整命中结果结构体

三、Event Point Damage 完整蓝图逻辑(敌人受伤处理)

完整分步连线操作

  1. 扣血逻辑

    拖拽Health变量 → Set Health,值为Health - Damage

  2. 部位倍率伤害(头部暴击)
  • Bone Name拖出 → Contains String,输入字符串head(头部骨骼名称)
  • 分支 Branch:True = 头部,False = 身体
    • True 分支:额外扣血,执行Set Health = Health - Damage * 1.5(1.5 倍爆头伤害)
  1. 命中特效(Hit Location 生成粒子)
  • 节点:Spawn Emitter at Location
  • Location = Hit Location
  • Rotation = Make Rot from X Vector,向量填Hit Normal
  • Emitter 模板填入血液粒子 P_Blood(可使用引擎自带 Niagara 粒子)
  1. 敌人死亡判定
  • 分支 Branch:Health <= 0
    • True:执行死亡逻辑
      1. Set Actor Hidden In Game隐藏模型
      2. Destroy Actor延时 2 秒销毁
    • False:播放受击动画Play Anim Montage
  1. 击退效果

    Launch Character节点,推力方向取反向Shot From Direction,力度 500

完整蓝图流程图文字版

plaintext
Event Point Damage
├─分支:Bone Name是否包含head(头部判定)
│  ├─True:Health = Health - Damage * 1.5
│  └─False:Health = Health - Damage
├─Spawn Emitter at Location(Hit Location+Hit Normal)//流血特效
├─Launch Character(击退敌人)
└─分支 Health <= 0
   ├─True:播放死亡动画 → 延时2s销毁Actor
   └─False:播放受击硬直动画

四、关键碰撞设置(必做,否则伤害无法触发)

1. 子弹碰撞设置(BP_Projectile)

  1. 选中Projectile Movement组件
    • 碰撞预设:Projectile
    • 碰撞响应:对 Pawn 设为Block(阻挡,触发 On Hit)
  2. 静态网格体组件 → 细节面板:
    • 生成击中事件:勾选Generate Hit Events

2. 敌人 Capsule 碰撞设置(BP_Enemy)

  1. Capsule 组件 → 碰撞预设:Pawn
  2. 确保碰撞通道对 Projectile 为 Block,否则子弹穿透不触发命中

五、完整测试流程

  1. 编译全部蓝图(BP_Projectile、BP_Enemy)
  2. 关卡中拖拽放入BP_Enemy敌人
  3. 点击运行,鼠标左键发射子弹击中敌人
  4. 现象验证:
    1. 命中敌人 → 敌人触发Event Point Damage扣血
    2. 击中头部骨骼,伤害倍率提升
    3. 命中点生成血液粒子特效
    4. 血量归零时敌人播放死亡动画并销毁

六、常见踩坑解决

  1. Event Point Damage 完全不触发
    • 子弹未调用Apply Point Damage
    • 碰撞通道设置为 Overlap/Ignore,没有 Block;
    • 子弹组件未开启Generate Hit Events
  2. Bone Name 为空,无法区分头部
    • 敌人模型必须绑定骨骼,Capsule 碰撞无法读取骨骼;
    • 命中的是胶囊碰撞体而非 Skeletal Mesh,修改子弹碰撞只阻挡骨骼网格体。
  3. 多人联机伤害失效
    • Apply Point Damage必须在服务端执行(添加 Has Authority 分支判断);
    • 血量变量开启复制(Replicate),保证客户端同步。
  4. 命中特效不显示
    • Hit Location 连线错误,未使用 Break Hit Result 的 Impact Point;
    • 粒子资源未赋值、缩放为 0。

七、拓展进阶用法

  1. 近战武器点伤害

    近战不使用子弹,在攻击动画通知中执行射线检测(Line Trace),命中目标后直接调用Apply Point Damage,触发敌人Event Point Damage

  2. 环境点伤害(爆炸碎片)

    爆炸碎片命中物体时调用 Apply Point Damage,在可破坏网格、角色上接收 Event Point Damage 实现碎块伤害。

  3. 伤害过滤

    在 Event Point Damage 开头添加分支,通过Damage Type区分爆炸 / 子弹 / 近战,分别执行护甲减免逻辑。

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

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

昵称

取消
昵称表情代码图片

    暂无评论内容