Пример #1
0
        AnimationState FetchAnimation(ActionData action, float startTime, AnimSlotData data)
        {
            if (action == null || action.AnimSlotList.Count == 0 || CacheAnimation == null)
            {
                return(null);
            }


            AnimSlotData animSlot = action.AnimSlotList[UnityEngine.Random.Range(0, action.AnimSlotList.Count - 1)];

            //if (action.MoveChange)
            //{
            //    for (int i = 0; i < action.AnimSlotList.Count; ++i)
            //    {
            //        if (!action.AnimSlotList[i].UseDir)
            //        {
            //            animSlot = action.AnimSlotList[i];
            //            break;
            //        }
            //    }

            //    if (data != null)
            //        animSlot = data;

            //    if (mActiveSlot != null)
            //        animSlot = mActiveSlot;

            //    if (mActiveSlot != null
            //        && CachedAnimationState != null
            //        && CachedAnimationState.name == animSlot.Animation)
            //        startTime = CachedAnimationState.normalizedTime;
            //}

            if (animSlot == null)
            {
                return(null);
            }

            AnimationState animState = null;

            animState = CacheAnimation[animSlot.Animation];
            if (animState == null)
            {
                Debug.LogError(string.Format("Fail to change animation: {0}/{1}/{2}", Info.RoleID, action.AnimId, animSlot.Animation));
                return(null);
            }

            //  动画起始帧
            animState.normalizedTime = startTime.Equals(0) ? animSlot.Start * 0.01f : startTime;

            //  动画速度
            //  0 - 100 = 1
            //  20 -100 = 0.8
            animState.speed = (animSlot.End - animSlot.Start) * animState.length * 10.0f / (action.AnimTime);

            return(animState);
        }
Пример #2
0
        AnimationState FetchAnimation(ActionData action, float startTime, AnimSlotData data)
        {
            if (action == null || action.AnimSlotList.Count == 0 || CacheAnimation == null)
                return null;

            AnimSlotData animSlot = action.AnimSlotList[UnityEngine.Random.Range(0, action.AnimSlotList.Count - 1)];
            //if (action.MoveChange)
            //{
            //    for (int i = 0; i < action.AnimSlotList.Count; ++i)
            //    {
            //        if (!action.AnimSlotList[i].UseDir)
            //        {
            //            animSlot = action.AnimSlotList[i];
            //            break;
            //        }
            //    }

            //    if (data != null)
            //        animSlot = data;

            //    if (mActiveSlot != null)
            //        animSlot = mActiveSlot;

            //    if (mActiveSlot != null
            //        && CachedAnimationState != null
            //        && CachedAnimationState.name == animSlot.Animation)
            //        startTime = CachedAnimationState.normalizedTime;
            //}

            if (animSlot == null)
                return null;

            AnimationState animState = null;
            animState = CacheAnimation[animSlot.Animation];
            if (animState == null)
            {
                Debug.LogError(string.Format("Fail to change animation: {0}/{1}/{2}", Info.RoleID, action.AnimId, animSlot.Animation));
                return null;
            }

            //  动画起始帧
            animState.normalizedTime = startTime.Equals(0) ? animSlot.Start * 0.01f : startTime;

            //  动画速度
            //  0 - 100 = 1
            //  20 -100 = 0.8
            animState.speed = (animSlot.End - animSlot.Start) * animState.length * 10.0f / (action.AnimTime);

            return animState;
        }