예제 #1
0
        private void DetermineNextAnimation(float time)
        {
            _nextAnimation     = null;
            _nextAnimationTime = 0;

            if (Current.NextAnimationName == null)
            {
                return;
            }
            if (Clips.Count == 1)
            {
                return;
            }

            if (Current.NextAnimationTime > 0 + float.Epsilon)
            {
                _nextAnimationTime = (time + Current.NextAnimationTime).Snap();
            }
            else
            {
                return;
            }

            if (Current.NextAnimationName == RandomizeAnimationName)
            {
                var idx = Random.Range(0, Clips.Count - 1);
                if (idx >= Clips.IndexOf(Current))
                {
                    idx += 1;
                }
                _nextAnimation = Clips[idx].AnimationName;
            }
            else if (Current.NextAnimationName.EndsWith(RandomizeGroupSuffix))
            {
                var prefix = Current.NextAnimationName.Substring(0, Current.NextAnimationName.Length - RandomizeGroupSuffix.Length);
                var group  = Clips
                             .Where(c => c.AnimationName != Current.AnimationName)
                             .Where(c => c.AnimationName.StartsWith(prefix))
                             .ToList();
                var idx = Random.Range(0, group.Count);
                _nextAnimation = group[idx].AnimationName;
            }
            else
            {
                _nextAnimation = Current.NextAnimationName;
            }
        }
예제 #2
0
 public int GetClip()
 {
     return(Clips.IndexOf(finalPlayer.Clip));
 }