summaryrefslogtreecommitdiff
path: root/Assets/ActionTool/Editor/ActionData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ActionTool/Editor/ActionData.cs')
-rw-r--r--Assets/ActionTool/Editor/ActionData.cs40
1 files changed, 26 insertions, 14 deletions
diff --git a/Assets/ActionTool/Editor/ActionData.cs b/Assets/ActionTool/Editor/ActionData.cs
index 82eedee3..13324342 100644
--- a/Assets/ActionTool/Editor/ActionData.cs
+++ b/Assets/ActionTool/Editor/ActionData.cs
@@ -52,8 +52,9 @@ namespace ActionTool
private double m_PrevLocalTime;
private float m_PrevNormalTime;
+ private int m_PrevAnimEventFrame; // 上次的帧数(整数)
- private bool m_NotApplyCurves;
+ private bool m_NotApplyCurves;
public bool applyCurves { get { return !m_NotApplyCurves; } set { m_NotApplyCurves = !value; } } // 是否开启curve控制速度
private bool m_NotApplyCurve;
public bool applyCurve { get { return !m_NotApplyCurve; } set { m_NotApplyCurve = !value; } } // 是否开启curve控制速度
@@ -209,36 +210,47 @@ namespace ActionTool
float normalizeTime = m_CurAnimFrame / m_TotalFrame;
- m_Animator.speed = 1;
- m_Animator.Play(kStateName, 0, normalizeTime);
- m_Animator.Update(0);
- m_Animator.speed = 0;
-
if(applyRootMotion)
{
var animData = ActionManager.animationData;
- bool overrideRM = animData != null && animData.overrideRootMotion != null;
+ bool overrideRM = animData != null && animData.overrideRootMotion == true;
if(!overrideRM && m_RootMotion)
{
#if true
- // Action Tool这里需要转换一下root motion的轴
- m_Animator.transform.position = RootMotionUtility.ExchangeXZ(m_RootMotion.GetRootMotion(normalizeTime));
+ // Action Tool这里需要转换一下root motion的轴
+ m_Animator.transform.position = RootMotionUtility.ExchangeXZ(m_RootMotion.GetRootMotion(normalizeTime));
#else
- Vector3 dis = m_RootMotion.GetRootMotionDistance(m_PrevNormalTime, normalizeTime);
- m_Animator.transform.position += RootMotionUtility.ExchangeXZ(dis);
- m_PrevNormalTime = normalizeTime;
+ Vector3 dis = m_RootMotion.GetRootMotionDistance(m_PrevNormalTime, normalizeTime);
+ m_Animator.transform.position += RootMotionUtility.ExchangeXZ(dis);
+ m_PrevNormalTime = normalizeTime;
#endif
}
else if(overrideRM)
{
if(!ActionRootMotionEditor.IsRecord)
{
-
+ m_Animator.transform.position = animData.rootMotionOverrideData.GetPosition(m_CurAnimFrame);
+ }
+ else // 只在第一次播到这一帧的时候设置位置,否则场景里没法编辑位置
+ {
+ int curAnimEventFrame = (int)m_CurAnimFrame;
+ normalizeTime = curAnimEventFrame / m_TotalFrame;
+ if (curAnimEventFrame != m_PrevAnimEventFrame)
+ {
+ m_Animator.transform.position = animData.rootMotionOverrideData.GetPosition(curAnimEventFrame);
+ }
+ m_PrevAnimEventFrame = curAnimEventFrame;
}
}
}
- }
+
+ m_Animator.speed = 1;
+ m_Animator.Play(kStateName, 0, normalizeTime);
+ m_Animator.Update(0);
+ m_Animator.speed = 0;
+
+ }
public int GetCurrentFrame()
{