2025-11-25 08:19:33 -05:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
|
|
using SLSUtilities.FunctionalAnimation;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.Serialization;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cielonos.MainGame.Characters
|
|
|
|
|
|
{
|
|
|
|
|
|
[CreateAssetMenu(fileName = "BaseAnimationGroup", menuName = "Cielonos/Characters/BaseAnimationGroup")]
|
|
|
|
|
|
public class BaseAnimationGroup : SerializedScriptableObject
|
|
|
|
|
|
{
|
|
|
|
|
|
public AnimationClip landIdle;
|
|
|
|
|
|
public List<AnimationClip> landIdleExtras;
|
|
|
|
|
|
public AnimationClip landWalkForward, landWalkBack, landWalkLeft, landWalkRight;
|
|
|
|
|
|
public AnimationClip landRunForward, landRunBack, landRunLeft, landRunRight;
|
|
|
|
|
|
public AnimationClip jumpStart;
|
2026-04-12 02:11:15 -04:00
|
|
|
|
public AnimationClip inAir;
|
2025-11-25 08:19:33 -05:00
|
|
|
|
public AnimationClip jumpLand;
|
2026-04-12 02:11:15 -04:00
|
|
|
|
public FuncAnimData getHitMediumFront, getHitMediumBack, getHitMediumLeft, getHitMediumRight;
|
|
|
|
|
|
public FuncAnimData getHitHeavyFront, getHitHeavyBack, getHitHeavyLeft, getHitHeavyRight;
|
2025-11-25 08:19:33 -05:00
|
|
|
|
public AnimationClip riseUpFront, riseUpBack, riseUpLeft, riseUpRight;
|
|
|
|
|
|
public AnimationClip incapacitation, death;
|
2026-05-10 11:47:55 -04:00
|
|
|
|
|
2025-11-25 08:19:33 -05:00
|
|
|
|
public FuncAnimData dash;
|
|
|
|
|
|
public FuncAnimData dodge;
|
|
|
|
|
|
|
|
|
|
|
|
public void SetUp(AnimationSubcontrollerBase animSc)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (animSc is PlayerAnimationSubcontroller playerAnimSc)
|
|
|
|
|
|
{
|
2026-05-10 11:47:55 -04:00
|
|
|
|
FunctionalAnimationSubmodule funcAnimSm = animSc.fullBodyFuncAnimSm;
|
2025-11-25 08:19:33 -05:00
|
|
|
|
|
2026-05-10 11:47:55 -04:00
|
|
|
|
// 基础动画 clip,由调用方管理批处理生命周期
|
|
|
|
|
|
playerAnimSc.SetOverride("LandIdle", landIdle);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandWalkForward", landWalkForward);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandWalkBack", landWalkBack);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandWalkLeft", landWalkLeft);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandWalkRight", landWalkRight);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandRunForward", landRunForward);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandRunBack", landRunBack);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandRunLeft", landRunLeft);
|
|
|
|
|
|
playerAnimSc.SetOverride("LandRunRight", landRunRight);
|
|
|
|
|
|
playerAnimSc.SetOverride("JumpStart", jumpStart);
|
|
|
|
|
|
playerAnimSc.SetOverride("InAir", inAir);
|
|
|
|
|
|
playerAnimSc.SetOverride("JumpLand", jumpLand);
|
2025-12-17 04:19:38 -05:00
|
|
|
|
|
2026-05-10 11:47:55 -04:00
|
|
|
|
// FuncAnimData 通过 Reset → Add → SetOverride 进入同一缓冲区
|
|
|
|
|
|
if (getHitMediumFront) funcAnimSm.Reset(getHitMediumFront);
|
|
|
|
|
|
if (getHitMediumBack) funcAnimSm.Reset(getHitMediumBack);
|
|
|
|
|
|
if (getHitMediumLeft) funcAnimSm.Reset(getHitMediumLeft);
|
|
|
|
|
|
if (getHitMediumRight) funcAnimSm.Reset(getHitMediumRight);
|
|
|
|
|
|
if (getHitHeavyFront) funcAnimSm.Reset(getHitHeavyFront);
|
|
|
|
|
|
if (getHitHeavyBack) funcAnimSm.Reset(getHitHeavyBack);
|
|
|
|
|
|
if (getHitHeavyLeft) funcAnimSm.Reset(getHitHeavyLeft);
|
|
|
|
|
|
if (getHitHeavyRight) funcAnimSm.Reset(getHitHeavyRight);
|
|
|
|
|
|
if (dash) funcAnimSm.Reset(dash);
|
|
|
|
|
|
if (dodge) funcAnimSm.Reset(dodge);
|
2025-11-25 08:19:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|