From 22891bf59032ba88262824255a706d652031384b Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 10 Mar 2022 14:07:40 +0800 Subject: * move folder --- Assets/Scripts/Unit/UnitRootMotion.cs | 127 ---------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 Assets/Scripts/Unit/UnitRootMotion.cs (limited to 'Assets/Scripts/Unit/UnitRootMotion.cs') diff --git a/Assets/Scripts/Unit/UnitRootMotion.cs b/Assets/Scripts/Unit/UnitRootMotion.cs deleted file mode 100644 index 5234daab..00000000 --- a/Assets/Scripts/Unit/UnitRootMotion.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -#if UNITY_EDITOR -using UnityEditor; -#endif - -// 同步root motion到角色根节点 -[DisallowMultipleComponent] -public class UnitRootMotion : UnitComponent -{ - RootMotionData m_RootMotionData; - - float m_PrevFrame; - AnimationData m_PrevAnimationData; - - public override void Initialize() - { - base.Initialize(); - - m_PrevFrame = 0; - m_PrevAnimationData = null; - } - -#if false // 用自定义root motion - - private float m_PrevNormalTime; - - Dictionary m_RootMotionDic = new Dictionary(); - - public void Reset() - { - m_PrevNormalTime = 0; - } - - public override void OnUpdate() - { - base.OnUpdate(); - - var state = m_Owner.unitAnimation.curState; - float playbackTime = m_Owner.unitAnimation.playbackTime; - - var rootMotion = m_RootMotionDic[state]; - float normalTime = (playbackTime % rootMotion.animationLength) / rootMotion.animationLength; - - if (m_PrevNormalTime > normalTime) - m_PrevNormalTime = 0; - - m_Owner.transform.position += rootMotion.GetRootMotionDistance(m_PrevNormalTime, normalTime); - m_PrevNormalTime = normalTime; - } - - public void SetUpRootMotion(string unitFolder, UnitActionData actions) - { - if (actions == null) - return; - - foreach (var action in actions.actions) - { -#if UNITY_EDITOR - AnimationClip clip = action.Value; - string name = clip.name; - string path = unitFolder + "RootMotion/" + name + ".asset"; - RootMotionData data = AssetDatabase.LoadAssetAtPath(path); - m_RootMotionDic.Add(action.Key, data); -#endif - } - } - -#else - - public override void OnUpdate() - { - base.OnUpdate(); - } - - public void OnAnimationChange() - { - m_PrevAnimationData = null; - } - - public void UpdateRootMotion() - { - bool overrideRootMotion = m_Owner.unitAnimation.baseLayer.animationData.overrideRootMotion; - if(overrideRootMotion) - { - var baseLayer = m_Owner.unitAnimation.baseLayer; - var rmData = m_Owner.unitAnimation.baseLayer.animationData.rootMotionOverrideData; - float frame = baseLayer.playbackNormalizedTime * baseLayer.clipInfo.clip.length * TimelineEventProxy.FPS; - var animData = m_Owner.unitAnimation.baseLayer.animationData; - if(animData != m_PrevAnimationData) - { - m_PrevAnimationData = animData; - m_PrevFrame = frame; - } - if (m_PrevFrame > frame) - m_PrevFrame = frame; - Vector3 dest = rmData.GetRootMotionDistance(m_PrevFrame, frame); - Vector3 realDest = m_Owner.transform.rotation * dest; - if(animData.GetProperty(EAnimationProperty.ORMEnforcement) != 0) - { - if(m_Owner.transform.position.y + realDest.y < 0) - realDest.y = 0; - } - m_Owner.transform.position += realDest; - - m_PrevFrame = frame; - } - else - { - // 因为Unti被旋转了90度,所以这里的deltaPosition的forward是x方向了 - Vector3 dest = m_Owner.unitAnimation.animator.deltaPosition; - dest.z = 0; - var state = m_Owner.unitAnimation.baseLayer.stateInfo; - bool ignoreY = m_Owner.unitAnimation.baseLayer.animationData.GetProperty(EAnimationProperty.IgnoreY, 0) != 0; - if (state.IsTag("IgnoreY") || ignoreY) - { - dest.y = 0; - } - //m_Owner.transform.position += RootMotionUtility.ExchangeXZ(dest); // 不需要exchangeXZ - m_Owner.transform.position += dest; - } - } - -#endif - -} \ No newline at end of file -- cgit v1.1-26-g67d0