创游世界战斗系统速查卡
一句话摘要
创游世界战斗系统的快速查询表,一问一答形式,帮助快速查阅战斗组件、伤害计算、技能实现和常见问题。
适合谁阅读
- 需要快速设计战斗系统的开发者
- 遇到战斗逻辑问题的创作者
- 想了解战斗机制设计模式的进阶用户
你将学到什么
- 战斗系统需要的核心组件
- 伤害计算的实现方式
- 生命值和死亡的处理逻辑
- 武器和子弹的配置方法
- 战斗系统常见问题与解决
基础概念类
Q:战斗系统需要哪些核心组件?
A:战斗系统的核心组件:
| 组件 | 作用 | 必须 |
|---|---|---|
| 物理组件 | 让物体有碰撞和移动能力 | ✅ |
| 生命组件 | 管理生命值、受伤、死亡 | ✅ |
| 伤害组件 | 造成伤害 | ✅ |
| 武器槽组件 | 装备和使用武器 | 可选 |
| 子弹组件 | 发射子弹 | 可选 |
Q:战斗系统的基本关系链是什么?
A:
角色拥有武器槽 → 武器槽装备武器 →
近战直接伤敌 / 远程通过子弹伤敌 →
目标通过生命组件接收伤害 →
命中/击杀/死亡通过事件回调处理后续生命组件类
Q:生命组件有什么用?
A:生命组件让物体有「血条」,可以受到伤害并死亡。
核心参数:
| 参数 | 说明 |
|---|---|
| 最大生命值 | 满血时的数值 |
| 当前生命值 | 当前剩余血量 |
| 生命恢复 | 每秒恢复的血量(可选) |
| 最低生命 | 不会低于这个值(可选) |
Q:生命组件有哪些触发时机?
A:
| 触发时机 | 说明 |
|---|---|
| 当受到伤害时 | 物体受伤时触发 |
| 当死亡时 | 生命值降为0时触发 |
| 当生命值改变时 | 任何生命值变化时触发 |
Q:受伤逻辑怎么写?
A:
当受到伤害时
获取 伤害值
获取 当前生命值
设置 当前生命值 = 当前生命值 - 伤害值
播放动效 "受伤"
显示伤害飘字 "-" + 伤害值
如果 当前生命值 <= 0
发送广播 "目标死亡"
结束Q:死亡逻辑怎么写?
A:
当死亡时
播放动画 "死亡"
播放粒子特效 "消散"
等待 0.5 秒
销毁自身
发送广播 "怪物死亡" 并携带文本 "怪物A"伤害组件类
Q:伤害组件有什么用?
A:让物体可以「造成伤害」,需要配合物理组件使用。
核心参数:
| 参数 | 说明 |
|---|---|
| 基础伤害 | 每次攻击的伤害值 |
| 攻击间隔 | 两次攻击的最小间隔 |
| 攻击范围 | 攻击能生效的距离 |
| 伤害类型 | 物理/魔法(可选) |
Q:伤害组件有哪些触发时机?
A:
| 触发时机 | 说明 |
|---|---|
| 当攻击时 | 物体执行攻击时触发 |
| 当造成伤害时 | 实际造成伤害时触发 |
Q:伤害计算怎么实现?
A:基础伤害计算:
当造成伤害时
获取 攻击方.基础攻击力
获取 防御方.防御力
伤害 = 基础攻击力 - 防御力
如果 伤害 < 1
设置 伤害 = 1 // 最小伤害为1
结束
发送广播 "造成伤害" 并携带数字 伤害Q:暴击怎么实现?
A:
当造成伤害时
获取 基础伤害
获取 暴击率
随机数 = 随机(1, 100)
如果 随机数 <= 暴击率
实际伤害 = 基础伤害 * 暴击倍率
显示 "暴击!"
否则
实际伤害 = 基础伤害
结束武器与子弹类
Q:武器槽组件有什么用?
A:让角色可以「装备武器」,切换和使用武器。
核心参数:
| 参数 | 说明 |
|---|---|
| 默认武器 | 开始时装备的武器 |
| 武器列表 | 可以切换的武器 |
| 武器属性 | 攻击力、攻击速度等 |
Q:武器槽有哪些触发时机?
A:
| 触发时机 | 说明 |
|---|---|
| 当武器切换时 | 切换武器时触发 |
| 当使用武器时 | 使用武器攻击时触发 |
Q:近战武器怎么配置?
A:
武器配置:
├── 类型:近战
├── 伤害:50
├── 攻击范围:50(像素)
└── 攻击间隔:1秒
武器脚本:
当使用武器时
播放动画 "攻击"
获取攻击范围内的敌人
对每个敌人造成伤害
endQ:子弹组件有什么用?
A:让物体可以「发射子弹」,需要配合物理组件(不受重力)。
核心参数:
| 参数 | 说明 |
|---|---|
| 子弹速度 | 飞行速度 |
| 子弹伤害 | 命中时的伤害 |
| 子弹生命 | 存活时间 |
| 是否穿透 | 是否穿透目标 |
Q:子弹发射逻辑怎么写?
A:
当发射子弹时
获取 子弹发射位置
获取 目标方向
生成 子弹对象 在 发射位置
设置 子弹.移动方向 = 目标方向
设置 子弹.移动速度 = 500
设置 子弹.伤害 = 30
播放音效 "发射"
播放粒子特效 "发射烟雾"
endQ:子弹命中逻辑怎么写?
A:
当碰撞时
获取 碰撞对象
如果 碰撞对象 有 "生命组件"
造成伤害
销毁子弹
否则
如果 子弹.是否穿透 = 假
销毁子弹
结束
结束战斗状态类
Q:战斗状态怎么管理?
A:使用属性记录战斗状态:
当进入战斗时
设置自身属性.战斗状态 = "战斗"
播放动效 "进入战斗"
end
当离开战斗时
设置自身属性.战斗状态 = "非战斗"
播放动效 "脱离战斗"
endQ:无敌状态怎么实现?
A:
当获得无敌状态时
设置自身属性.无敌 = 真
设置 无敌持续时间 = 3
播放动效 "无敌光环"
重复执行
等待 1 秒
设置 无敌持续时间 = 无敌持续时间 - 1
如果 无敌持续时间 <= 0
设置自身属性.无敌 = 假
停止循环
结束
结束
end
当受到伤害时
如果 自身属性.无敌 = 真
显示 "无敌状态,伤害免疫"
停止 // 不执行后续伤害逻辑
结束
endQ:闪避/格挡怎么实现?
A:
当受到攻击时
获取 闪避率
随机数 = 随机(1, 100)
如果 随机数 <= 闪避率
显示 "闪避!"
停止
结束
获取 格挡率
如果 随机数 <= 格挡率
实际伤害 = 伤害 * 0.5 // 格挡减半伤
显示 "格挡!"
结束
造成伤害 实际伤害常见问题类
Q:怪物不会受伤怎么办?
A:检查清单:
| 检查项 | 说明 |
|---|---|
| 怪物有物理组件吗 | 没有物理无法碰撞 |
| 攻击方有伤害组件吗 | 伤害组件才能造成伤害 |
| 怪物有生命组件吗 | 没有生命组件无法受伤 |
| 碰撞检测开启了吗 | 物理组件的碰撞检测要开 |
Q:子弹不飞/不消失怎么办?
A:检查:
| 检查项 | 说明 |
|---|---|
| 子弹有物理组件吗 | 物理才能移动 |
| 物理组件是否不受重力 | 否则子弹会下落 |
| 子弹的生命时间 | 是否太短/太长 |
| 碰撞检测是否正确 | 碰撞后是否正确销毁 |
Q:伤害数值不对?
A:检查:
- 基础伤害是否正确设置
- 是否有加成/减免逻辑
- 伤害类型是否正确
- 防御力计算是否正确
Q:攻击间隔不起作用?
A:检查攻击脚本是否有冷却控制:
当攻击时
如果 自身属性.攻击冷却 > 0
显示 "冷却中"
停止
结束
执行攻击
设置 自身属性.攻击冷却 = 1 // 1秒冷却
重复执行
等待 0.1 秒
设置 自身属性.攻击冷却 = 攻击冷却 - 0.1
如果 攻击冷却 <= 0
设置 攻击冷却 = 0
停止循环
结束
结束战斗系统选择速查
| 需求 | 需要的组件 |
|---|---|
| 物体能受伤/死亡 | 物理 + 生命 |
| 物体能造成伤害 | 物理 + 伤害 |
| 角色能装备武器 | 武器槽 |
| 发射子弹 | 子弹 + 物理(不受重力)+ 武器槽 |
| 近战攻击 | 伤害 + 物理 + 武器槽 |
| 显示血条 | 物体UI + 生命 |
概念关系速查
战斗系统 = 核心组件链
├── 物理组件(让物体能动、能碰撞)
├── 生命组件(管理血量)
│ ├── 当受到伤害时
│ ├── 当死亡时
│ └── 当生命值改变时
├── 伤害组件(造成伤害)
│ ├── 基础伤害
│ ├── 攻击间隔
│ └── 当造成伤害时
├── 武器槽(装备武器)
│ ├── 当武器切换时
│ └── 当使用武器时
└── 子弹组件(发射子弹)
├── 子弹速度
├── 子弹伤害
└── 当碰撞时相关页面
- 创游世界战斗系统设计入门 - 完整版战斗系统设计
- 创游世界组件速查卡 - 组件速查
- 创游世界物理与碰撞系统完全指南 - 物理与碰撞
- 创游世界数据存储选择指南 - 数据存储
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 伤害组件的具体参数默认值 | 🔄 待验证 | 需要官方文档确认 |
| 子弹组件的具体参数 | 🔄 待验证 | 需要官方文档确认 |
| 某些战斗状态的具体实现细节 | 🔄 待验证 | 需要实际项目测试 |
> 📝 说明:战斗系统核心机制已稳定,具体参数属于进阶内容。
后续优化方向
- [ ] 补充更多战斗技能的设计案例
- [ ] 增加战斗UI(如血条、技能栏)的设计说明
- [ ] 完善BOSS战的设计专题
