From 7163529a1c092e766e26b7d7b7f7b4b71583962b Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 9 Sep 2021 00:58:59 +0800 Subject: *misc --- .../Unit/Components/UnitAnimation/PCAnimation.cs | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs') diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs index 243ce162..df074061 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs @@ -75,6 +75,15 @@ public class PCAnimation : UnitAnimation public bool updateAnimationAuto { get; private set; } // 自动更新动画 + private AnimatorOverrideController controller + { + get + { + Debug.Assert(owner.unitAnimation.animator.runtimeAnimatorController is AnimatorOverrideController); + return owner.unitAnimation.animator.runtimeAnimatorController as AnimatorOverrideController; + } + } + public override void Initialize() { base.Initialize(); @@ -139,9 +148,19 @@ public class PCAnimation : UnitAnimation { if (!applyRootCurve) return; - } - - public void AnimIdle() + } + + AnimationData GetAnimationDataOfGivenState(string name) + { + string animName = controller[name].name; + string path = owner.folder + "AnimationData/" + animName + ".asset"; + AnimationData data = ResourceManager.Instance.LoadAsset(path); + return data; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + + public void AnimIdle() { CrossFade(EAnimState.Idle, 0.2f, 0); } @@ -164,7 +183,9 @@ public class PCAnimation : UnitAnimation else if (id == 2) state = EAnimState.AirAttack2; else if (id == 3) state = EAnimState.AirAttack3; - CrossFade(state, 0.05f); + AnimationData data = GetAnimationDataOfGivenState(state.ToString()); + Debug.Assert(data != null); + CrossFade(state, 0.02f, data.GetProperty(EAnimationProperty.ComboTimeOffset, defaultValue: 0)); } public void AnimAttackToAir(float offset) @@ -221,7 +242,7 @@ public class PCAnimation : UnitAnimation base.Play(animState.ToString(), layerIndex, normalizedTime); } - private void CrossFade(EAnimState animState, float normalizedTransitionDuration, int layerIndex = 0, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) + private void CrossFade(EAnimState animState, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f, int layerIndex = 0) { base.CrossFade(animState.ToString(), normalizedTransitionDuration, layerIndex, normalizedTimeOffset, normalizedTransitionTime); } -- cgit v1.1-26-g67d0