예제 #1
0
        public void Update()
        {
            if (!_animationActive)
            {
                return;
            }

            float secondsPerFrame   = 1 / (CurrentAnimation.FrameRate);
            float iterationDuration = secondsPerFrame * CurrentAnimation.Sprites.Length;

            _elapsedTime += Time.DeltaTime;

            if (_loopMode == LoopMode.Loop && _elapsedTime > iterationDuration)
            {
                OnAnimationFinish?.Invoke();
                _animationActive = false;
                Play(_currentAnimationName, _loopMode);
                return;
            }
            else if (_loopMode == LoopMode.FreezeAtLastFrame && _elapsedTime > iterationDuration)
            {
                OnAnimationFinish?.Invoke();
                _animationActive = false;
                return;
            }

            CurrentAnimation.CurrentFrame = (int)(_elapsedTime / secondsPerFrame);
            SetSprite(CurrentAnimation.Sprites[CurrentAnimation.CurrentFrame]);
        }
예제 #2
0
	public void PlayAnimation(float delay, OnAnimationFinish animation_callback)
	{
		m_animation_callback = animation_callback;

		PlayAnimation(delay);
	}
예제 #3
0
	public void PlayAnimation(OnAnimationFinish animation_callback)
	{
		m_animation_callback = animation_callback;

		PlayAnimation();
	}