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]); }
public void PlayAnimation(float delay, OnAnimationFinish animation_callback) { m_animation_callback = animation_callback; PlayAnimation(delay); }
public void PlayAnimation(OnAnimationFinish animation_callback) { m_animation_callback = animation_callback; PlayAnimation(); }