chore: initial commit
This commit is contained in:
62
Assets/Scripts/Enemies/EnemyFeedback.cs
Normal file
62
Assets/Scripts/Enemies/EnemyFeedback.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using UnityEngine;
|
||||
using MoreMountains.Feedbacks;
|
||||
using BaseGames.Combat;
|
||||
using BaseGames.Feedback;
|
||||
|
||||
namespace BaseGames.Enemies
|
||||
{
|
||||
/// <summary>
|
||||
/// 敌人反馈播放器:实现 IFeedbackPlayer,将行为语义映射到 MMF_Player 实例。
|
||||
/// 同时保留 OnHit/OnDeath 语义方法供 EnemyBase 直接调用(转发给接口方法)。
|
||||
/// </summary>
|
||||
public class EnemyFeedback : MonoBehaviour, IFeedbackPlayer
|
||||
{
|
||||
[Header("命中反馈")]
|
||||
[SerializeField] private MMF_Player _onHitLight;
|
||||
[SerializeField] private MMF_Player _onHitMedium;
|
||||
[SerializeField] private MMF_Player _onHitHeavy;
|
||||
|
||||
[Header("受伤 / 死亡反馈")]
|
||||
[SerializeField] private MMF_Player _onTakeHit;
|
||||
[SerializeField] private MMF_Player _onDeath;
|
||||
|
||||
// ── IFeedbackPlayer ──────────────────────────────────────────────────────
|
||||
public void PlayHit(HitWeight weight)
|
||||
{
|
||||
var player = weight switch
|
||||
{
|
||||
HitWeight.Light => _onHitLight,
|
||||
HitWeight.Medium => _onHitMedium,
|
||||
HitWeight.Heavy => _onHitHeavy,
|
||||
_ => _onHitLight,
|
||||
};
|
||||
player?.PlayFeedbacks();
|
||||
}
|
||||
|
||||
public void PlayTakeHit() => _onTakeHit?.PlayFeedbacks();
|
||||
public void PlayDeath() => _onDeath?.PlayFeedbacks();
|
||||
|
||||
// 以下方法对敌人无意义,提供空实现保持接口完整
|
||||
public void PlayParrySuccess() { }
|
||||
public void PlayHeal() { }
|
||||
public void PlayLandImpact() { }
|
||||
public void PlayAttackWhoosh() { }
|
||||
public void PlayJumpLaunch() { }
|
||||
public void TriggerPreset(string presetId) { }
|
||||
public void PlaySFXById(string sfxId) { }
|
||||
|
||||
// ── EnemyBase 语义方法(向前兼容)────────────────────────────────────────
|
||||
/// <summary>受到伤害时调用(由 EnemyBase 触发)。</summary>
|
||||
public void OnHit(DamageInfo info)
|
||||
{
|
||||
PlayTakeHit();
|
||||
}
|
||||
|
||||
/// <summary>死亡时调用(由 EnemyBase 触发)。</summary>
|
||||
public void OnDeath()
|
||||
{
|
||||
PlayDeath();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user