summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-09 00:58:59 +0800
committerchai <chaifix@163.com>2021-09-09 00:58:59 +0800
commit7163529a1c092e766e26b7d7b7f7b4b71583962b (patch)
treee82cf0ba0d4ba29d1987a55267125e8dc2dcc252 /Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs
parentaaea0c7f800a39f5e43e36e18837b174d344afdf (diff)
*misc
Diffstat (limited to 'Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs')
-rw-r--r--Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs31
1 files changed, 26 insertions, 5 deletions
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<AnimationData>(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);
}