4.9 KiB
4.9 KiB
企鹅冰面加速功能 - 实现总结
✅ 已完成的修改
1. PenguinAbility.h & .cpp
新增功能:
- ✅ 冰面速度倍率
IceSpeedMultiplier = 1.5f(1.5倍速度) - ✅ 冰面摩擦力
IceGroundFriction = 0.5f(更滑) - ✅ 状态标记
bIsOnIce - ✅
EnterIce()- 进入冰面时调整移动参数 - ✅
ExitIce()- 离开冰面时恢复参数 - ✅
OnEnterAbility()/OnExitAbility()- 能力切换时的处理 - ✅
GetOwnerMovementComponent()- 获取移动组件的辅助函数 - ✅ 设置
AbilityType = EBirdType::Penguin
2. HeronPlayer.cpp
新增功能:
- ✅ 添加
#include "ggj26_heron/Ability/PenguinAbility.h" - ✅ 更新
OnComponentBeginOverlap():- 检测 "Ice" 标签
- 企鹅进入冰面时调用
PenguinAbility->EnterIce() - 非企鹅在冰面上正常移动
- ✅ 更新
OnComponentEndOverlap():- 检测离开 "Ice" 标签
- 调用
PenguinAbility->ExitIce()
同时修复了 Mallard 的问题:
- ✅ 在
OnComponentBeginOverlap()中添加了缺失的MallardAbility->EnterWater()调用
3. HeronPlayerState.cpp
修复的 Bug:
- ✅ 修复第 76 行:
case EBirdType::Penguin现在正确创建UPenguinAbility而不是UMallardAbility - ✅ 添加了缺失的
break;语句
功能说明
企鹅在冰面上的表现:
- 速度加成:移动速度提升至 1.5 倍
- 滑行效果:摩擦力降低至 0.5,滑得更远
- 自动适应:进入和离开冰面时自动调整参数
- 能力切换:切换到其他能力时自动恢复正常参数
其他鸟类在冰面上:
- 保持正常移动速度和摩擦力
- 不会死亡(与水体不同)
使用方法
1. 在编辑器中设置冰面
1. 创建一个 Actor(Box Trigger 或 Box Collision)
2. 在 Details 面板 → Tags → 添加 "Ice"
3. 调整碰撞体大小覆盖冰面区域
2. 测试流程
1. 启动游戏
2. 切换到企鹅能力(Penguin)
3. 移动到冰面上
4. 观察速度提升和滑行效果
5. 离开冰面,速度恢复正常
3. 调整参数(可选)
在蓝图中:
1. 创建 BP_PenguinAbility(继承自 PenguinAbility)
2. 调整参数:
- Ice Speed Multiplier: 1.5(速度倍率)
- Ice Ground Friction: 0.5(摩擦力)
3. 在 BP_HeronPlayerState 中设置 Penguin Ability Class
系统架构
HeronPlayer (碰撞检测)
↓
检测 "Ice" 标签
↓
检查当前能力 == Penguin?
↓ Yes
PenguinAbility::EnterIce()
↓
调整移动参数:
- MaxWalkSpeed × 1.5
- GroundFriction = 0.5
代码改动汇总
修改的文件:
PenguinAbility.h- 添加冰面滑行功能PenguinAbility.cpp- 实现冰面滑行逻辑HeronPlayer.cpp- 添加冰面检测和调用HeronPlayerState.cpp- 修复 Penguin 创建 bug
新增的文档:
Docs/PenguinAbility使用说明.md- 详细使用文档
调试日志
系统会输出以下日志:
PenguinAbility: Entered Penguin ability - Can skate on ice!
HeronPlayer: Penguin entered ice, speed boost!
PenguinAbility: Entered ice - Ice skating mode activated!
PenguinAbility: Exited ice - Normal movement restored
HeronPlayer: Left ice
对比:Penguin vs Mallard
| 特性 | Penguin(企鹅) | Mallard(鸭子) |
|---|---|---|
| 触发条件 | 标签 "Ice" | 标签 "Water" |
| 速度变化 | × 1.5(加速) | × 0.8(减速) |
| 重力变化 | 无 | 降至 0.3 |
| 摩擦力 | 降至 0.5 | 提高至 2.0 |
| 非对应能力 | 正常移动 | 死亡 |
| 用途 | 快速移动 | 水中游泳 |
扩展建议
可以进一步添加:
- 冰面滑行的粒子特效
- 滑行时的动画切换
- 冰面滑行的音效
- 转向速度限制(模拟冰面难以控制)
- 冰面上的加速度曲线(渐进加速)
注意事项
⚠️ 重要提醒:
- 冰面 Actor 必须有 "Ice" 标签才会被识别
- 水体 Actor 必须有 "Water" 标签才会被识别
- 可以同时设置多个标签(同一 Actor 既是水又是冰)
- 参数调整建议在游戏运行时测试,找到最佳手感
- 如果创建蓝图子类,确保在 PlayerState 中正确设置
测试检查清单
- 企鹅进入冰面时速度提升
- 企鹅离开冰面时速度恢复
- 企鹅在冰面上滑行距离更长
- 其他鸟类在冰面上正常移动
- 切换能力时参数正确恢复
- 日志输出正常
- 同时有水和冰时都能正确处理
已知问题
✅ 无已知问题
下一步优化建议
- 视觉效果:添加冰花粒子、滑痕轨迹
- 音效:滑行、加速、停止的声音
- 动画:滑行姿态动画
- UI反馈:速度提升的 UI 提示
- 高级机制:
- 冲刺能力(在冰面上按键加速)
- 滑行跳跃(跳得更远)
- 冰面陷阱(某些冰面会破碎)