summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-06-21 13:05:57 +0800
committerchai <chaifix@163.com>2022-06-21 13:05:57 +0800
commita06a952a5c7a02573abb05153c709a7bc541ba15 (patch)
tree16c12e8841af776d0e6b6c85f69def62bf6da2c4 /Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
parenta6edbf35030ff5732e99db1dc4b119ba5b841aac (diff)
* unit state
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs29
1 files changed, 21 insertions, 8 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
index da16b947..931e49ab 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
@@ -7,6 +7,8 @@ using UnityEngine;
using UnityEditor;
#endif
+// http://unitylore.org/wiki/doku.php?id=l3y0gj
+
// 单独一层动画
public class AnimatorLayerInfo
{
@@ -27,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;
}
@@ -51,7 +56,6 @@ public class AnimatorLayerInfo
{
stateInfo = m_Animator.GetNextAnimatorStateInfo(layerIndex);
}
- // Debug.Assert(stateInfo.IsName(layerName + "." + m_CurrentState));
return stateInfo;
}
}
@@ -123,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;
}
}
@@ -279,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];
@@ -293,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];