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); }
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; }