Files
ggj26_heron/Docs/企鹅冰面加速实现总结.md

4.9 KiB
Raw Permalink Blame History

企鹅冰面加速功能 - 实现总结

已完成的修改

1. PenguinAbility.h & .cpp

新增功能:

  • 冰面速度倍率 IceSpeedMultiplier = 1.5f1.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. 速度加成:移动速度提升至 1.5 倍
  2. 滑行效果:摩擦力降低至 0.5,滑得更远
  3. 自动适应:进入和离开冰面时自动调整参数
  4. 能力切换:切换到其他能力时自动恢复正常参数

其他鸟类在冰面上:

  • 保持正常移动速度和摩擦力
  • 不会死亡(与水体不同)

使用方法

1. 在编辑器中设置冰面

1. 创建一个 ActorBox 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

代码改动汇总

修改的文件:

  1. PenguinAbility.h - 添加冰面滑行功能
  2. PenguinAbility.cpp - 实现冰面滑行逻辑
  3. HeronPlayer.cpp - 添加冰面检测和调用
  4. HeronPlayerState.cpp - 修复 Penguin 创建 bug

新增的文档:

  1. 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
非对应能力 正常移动 死亡
用途 快速移动 水中游泳

扩展建议

可以进一步添加:

  1. 冰面滑行的粒子特效
  2. 滑行时的动画切换
  3. 冰面滑行的音效
  4. 转向速度限制(模拟冰面难以控制)
  5. 冰面上的加速度曲线(渐进加速)

注意事项

⚠️ 重要提醒:

  1. 冰面 Actor 必须有 "Ice" 标签才会被识别
  2. 水体 Actor 必须有 "Water" 标签才会被识别
  3. 可以同时设置多个标签(同一 Actor 既是水又是冰)
  4. 参数调整建议在游戏运行时测试,找到最佳手感
  5. 如果创建蓝图子类,确保在 PlayerState 中正确设置

测试检查清单

  • 企鹅进入冰面时速度提升
  • 企鹅离开冰面时速度恢复
  • 企鹅在冰面上滑行距离更长
  • 其他鸟类在冰面上正常移动
  • 切换能力时参数正确恢复
  • 日志输出正常
  • 同时有水和冰时都能正确处理

已知问题

无已知问题

下一步优化建议

  1. 视觉效果:添加冰花粒子、滑痕轨迹
  2. 音效:滑行、加速、停止的声音
  3. 动画:滑行姿态动画
  4. UI反馈:速度提升的 UI 提示
  5. 高级机制
    • 冲刺能力(在冰面上按键加速)
    • 滑行跳跃(跳得更远)
    • 冰面陷阱(某些冰面会破碎)