From 7a73788fec18aa8648a4ff7d1d86760b22908513 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 2 Sep 2021 16:50:41 +0800 Subject: *misc --- Assets/ActionTool/Editor/ActionData.cs | 40 ++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'Assets/ActionTool/Editor/ActionData.cs') 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() { -- cgit v1.1-26-g67d0