using UnityEngine;
namespace BaseGames.Enemies
{
///
/// 敌人动画配置 SO(架构 07_EnemyModule §5)。
/// 所有字段为 AnimationClip,由 Animancer 直接播放。
///
[CreateAssetMenu(menuName = "BaseGames/Enemies/AnimationConfig")]
public class EnemyAnimationConfigSO : ScriptableObject
{
[Header("基础")]
public AnimationClip Idle;
public AnimationClip Walk;
public AnimationClip Run;
[Tooltip("转身动画(可选);配合 EnemyMovement._enableTurnAnimation 使用,留空则瞬时翻转")]
public AnimationClip Turn;
[Header("战斗")]
public AnimationClip Attack;
[Header("受击")]
public AnimationClip Hurt;
public AnimationClip Stagger;
[Tooltip("击飞腾空动画(可选);留空时由 EnemyBase.ScheduleStateRecovery 按时长自动恢复")]
public AnimationClip KnockUp;
public AnimationClip Dead;
[Header("AI 阶段")]
[Tooltip("发现目标时的短暂警觉姿态(可选)")]
public AnimationClip Alert;
[Tooltip("搜查时的慢走或环顾动作(留空则回退到 Walk)")]
public AnimationClip Investigate;
///
/// 按字段名返回 Clip(BD_PlayAnimation 使用)。
/// 支持字段名和常见别名(如 Attack_Melee / Idle 等)。
///
public AnimationClip GetClipByName(string name)
{
return name switch
{
"Idle" => Idle,
"Walk" => Walk,
"Run" or "Chase" => Run,
"Turn" => Turn,
"Attack" or "Attack_Melee" => Attack,
"Hurt" => Hurt,
"Stagger" => Stagger,
"KnockUp" => KnockUp,
"Dead" or "Death" => Dead,
"Alert" => Alert,
"Investigate" => Investigate ?? Walk,
_ => null,
};
}
}
}