diff options
author | chai <chaifix@163.com> | 2022-06-21 21:13:15 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-06-21 21:13:15 +0800 |
commit | c7ee5ed7c9575eda05404f6022992f179b36d3a0 (patch) | |
tree | 859f0b9e13f1dbeb87f01172244e2e5b63ca5638 /Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | |
parent | fb8dba84fe70d4bad6d22900716a67b02766448a (diff) | |
parent | 6bdc4612f4e77f513330a1b2af340341256544ba (diff) |
Merge branch 'master' of warmcat.org:/home/git-repo/Erika into HEAD
# Conflicts:
# Erika/Assets/Bundle/Materials/Unit/Effect.meta
# Erika/Assets/Bundle/Shaders/Include.meta
# Erika/Assets/Bundle/Shaders/Unit/Effect.meta
# Erika/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta
# Erika/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta
# Erika/Assets/Bundle/Unit/NPC.meta
# Erika/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta
# Erika/Assets/Bundle/Unit/PC/Erika/Models.meta
# Erika/Assets/Bundle/Unit/PC/Erika/UnitData.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta
# Erika/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta
# Erika/Assets/Bundle/Unit/Prop.meta
# Erika/Assets/Scripts/Managers/ResourceManager.cs
# Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
# Erika/Assets/Scripts/Utils/LogHelper.cs
# Erika/Assets/Scripts/Utils/LogTag.cs
# Erika/Assets/Scripts/Utils/LogTag.cs.meta
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r-- | Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | 64 |
1 files changed, 29 insertions, 35 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs index a5de6c57..931e49ab 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs @@ -1,17 +1,15 @@ #define ANIM_CROSS_FADE - using System; using System.Collections; using System.Collections.Generic; using UnityEngine; - #if UNITY_EDITOR -using UnityEditor;
+using UnityEditor; #endif -
-//http://unitylore.org/wiki/doku.php?id=l3y0gj
-
-// 单独一层动画
+ +// http://unitylore.org/wiki/doku.php?id=l3y0gj
+ +// 单独一层动画 public class AnimatorLayerInfo { public int layer; @@ -31,14 +29,17 @@ public class AnimatorLayerInfo get { AnimatorClipInfo[] clipInfos = clipsInfo; - if (clipInfos == null || clipInfos.Length == 0) + if (clipInfos == null || clipInfos.Length == 0)
+ {
+ LogHelper.LogError(LogTag.UnitAnimation, "No current animation.");
return null; + } var clip = clipInfos[0]; //选第一个 string folder = m_UnitAnimation.owner.folder; string name = clip.clip.name; if (m_AnimationData != null && m_AnimationData.animationName == name) return m_AnimationData; - string path = folder + "AnimationData/" + name + ".asset" ; // 要注意这里使用名字区别的,因为最终每个角色的动画都会在一个目录下面 + string path = folder + "AnimationData/" + name + ".asset" ; // 要注意这里是用名字区别的,因为最终每个角色的动画都会在一个目录下面 m_AnimationData = ResourceManager.Instance.LoadAsset<AnimationData>(path); return m_AnimationData; } @@ -55,7 +56,6 @@ public class AnimatorLayerInfo { stateInfo = m_Animator.GetNextAnimatorStateInfo(layerIndex); } - // Debug.Assert(stateInfo.IsName(layerName + "." + m_CurrentState)); return stateInfo; } } @@ -127,11 +127,6 @@ public class AnimatorLayerInfo AnimatorStateInfo state = stateInfo; if (!state.loop && state.normalizedTime > 1) return 1; - //if (state.IsName("Attack0"))
- //{
- // Debug.Log("normalizedTime=" + state.normalizedTime); - // Debug.Log("playbackTimeInSeconds=" + state.normalizedTime * clipInfo.clip.length); - //} return state.normalizedTime % 1f; } } @@ -190,12 +185,12 @@ public class AnimatorLayerInfo this.m_UnitAnimation = unitAnimation; this.m_Animator = animator; this.layer = layer; - m_CalcPlaybackTimeCoroutine = unitAnimation.StartCoroutine(CoCalcPlaybackRealTimeCoroutine()); + m_CalcPlaybackTimeCoroutine = unitAnimation.StartCoroutine(CalcPlaybackRealTimeCoroutine()); m_TimelineEventProxy = new TimelineEventProxy(unitAnimation.owner); applySpeedCurve = true; } - IEnumerator CoCalcPlaybackRealTimeCoroutine() + IEnumerator CalcPlaybackRealTimeCoroutine() { while (true) { @@ -228,13 +223,6 @@ public class AnimatorLayerInfo } } - /// <summary>
- /// cross fade,不同状态间切换的间隔预先设置或者动态根据Pose的差异计算
- /// </summary>
- /// <param name="animState"></param>
- /// <param name="normalizedTransitionDuration"></param>
- /// <param name="normalizedTimeOffset"></param>
- /// <param name="normalizedTransitionTime"></param> public void OnCrossFade(string animState, float normalizedTransitionDuration, float normalizedTimeOffset, float normalizedTransitionTime ) { m_CurrentState = animState;
@@ -244,11 +232,6 @@ public class AnimatorLayerInfo playbackSpeed = 1;
}
- /// <summary>
- /// 直接播放动作
- /// </summary>
- /// <param name="animState"></param>
- /// <param name="normalizedTime"></param>
public void OnPlay(string animState, float normalizedTime) { m_CurrentState = animState; @@ -272,12 +255,9 @@ public class UnitAnimation : UnitComponent public virtual AnimatorLayerInfo baseLayer
{
get { return layers[0]; }
- }
-
- /// <summary>
- /// 角色动作只有一层,不使用layer mask和layer syncing
- /// </summary> - public AnimatorLayerInfo layer + } + + public AnimatorLayerInfo layer { get
{
@@ -298,6 +278,12 @@ public class UnitAnimation : UnitComponent base.OnUpdate();
}
+ /// <summary>
+ /// 直接播放动作
+ /// </summary>
+ /// <param name="animState"></param>
+ /// <param name="layerIndex"></param>
+ /// <param name="normalizedTime"></param>
public void Play(string animState, int layerIndex = 0, float normalizedTime = float.NegativeInfinity) {
AnimatorLayerInfo layer = this.layers[layerIndex];
@@ -312,6 +298,14 @@ public class UnitAnimation : UnitComponent }
}
+ /// <summary>
+ /// CrossFade
+ /// </summary>
+ /// <param name="animState"></param>
+ /// <param name="normalizedTransitionDuration"></param>
+ /// <param name="layerIndex"></param>
+ /// <param name="normalizedTimeOffset"></param>
+ /// <param name="normalizedTransitionTime"></param>
public void CrossFade(string animState, float normalizedTransitionDuration, int layerIndex = 0, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f)
{
AnimatorLayerInfo layer = this.layers[layerIndex];
|