namespace BaseGames.Feedback { /// /// 反馈播放器接口:封装所有角色反馈行为,解耦 Character 逻辑与 Feel/MMF_Player 的直接依赖。 /// 由 PlayerFeedback(玩家)和 EnemyFeedback(敌人)分别实现; /// NullFeedbackPlayer 用于测试/占位。 /// public interface IFeedbackPlayer { // ── 命中 ────────────────────────────────────────────────────────────────── /// 对目标造成命中时播放对应力度的反馈(摄像机震屏 + 控制器振动等)。 void PlayHit(HitWeight weight); /// 成功弹反(Parry)时播放反馈。 void PlayParrySuccess(); // ── 受伤 / 死亡 ────────────────────────────────────────────────────────── /// 角色受到伤害时播放反馈(闪白 + 轻微震屏等)。 void PlayTakeHit(); /// 角色死亡时播放反馈(慢动作 + 震屏 + 音效)。 void PlayDeath(); // ── 状态恢复 ───────────────────────────────────────────────────────────── /// 治疗/恢复血量时播放反馈(粒子 + 音效)。 void PlayHeal(); // ── 移动 / 动作 ────────────────────────────────────────────────────────── /// 硬着陆时播放地面冲击反馈。 void PlayLandImpact(); /// 攻击出手时播放破风反馈。 void PlayAttackWhoosh(); /// 跳跃起跳时播放反馈。 void PlayJumpLaunch(); // ── 通用 ───────────────────────────────────────────────────────────────── /// 通过 presetId 触发在 Inspector 中配置的命名预设 MMF_Player。 void TriggerPreset(string presetId); /// 通过 sfxId 触发单次音效(不带任何摄像机/振动反馈)。 void PlaySFXById(string sfxId); } /// 命中力度。 public enum HitWeight { Light, Medium, Heavy } /// /// 空对象模式实现:所有方法均为空操作,用于测试和不需要反馈的实体。 /// public class NullFeedbackPlayer : IFeedbackPlayer { public static readonly NullFeedbackPlayer Instance = new NullFeedbackPlayer(); public void PlayHit(HitWeight weight) { } public void PlayParrySuccess() { } public void PlayTakeHit() { } public void PlayDeath() { } public void PlayHeal() { } public void PlayLandImpact() { } public void PlayAttackWhoosh() { } public void PlayJumpLaunch() { } public void TriggerPreset(string presetId) { } public void PlaySFXById(string sfxId) { } } }