public override bool GetSkillActivateAnimation(int dataId, out float triggerDuration, out float totalDuration) { ActionAnimation2D animation2D; SkillAnimations2D skillAnimations2D; if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D)) { animation2D = defaultSkillActivateAnimation2D; } else { animation2D = skillAnimations2D.activateAnimation; } triggerDuration = 0f; totalDuration = 0f; if (animation2D == null) { return(false); } AnimationClip2D clip = animation2D.GetClipByDirection(CurrentDirectionType); if (clip == null) { return(false); } triggerDuration = clip.duration * animation2D.triggerDurationRate; totalDuration = clip.duration + animation2D.extraDuration; return(true); }
public override bool GetRandomLeftHandAttackAnimation(int dataId, out int animationIndex, out float triggerDuration, out float totalDuration) { ActionAnimation2D animation2D = null; if (!CacheLeftHandAttackAnimations.TryGetValue(dataId, out animation2D)) { animation2D = defaultAttackAnimation2D; } animationIndex = 0; triggerDuration = 0f; totalDuration = 0f; if (animation2D == null) { return(false); } AnimationClip2D clip = animation2D.GetClipByDirection(CurrentDirectionType); if (clip == null) { return(false); } triggerDuration = clip.duration * animation2D.triggerDurationRate; totalDuration = clip.duration + animation2D.extraDuration; return(true); }
IEnumerator PlayActionAnimationRoutine(AnimActionType animActionType, int dataId, int index, float playSpeedMultiplier) { // If animator is not null, play the action animation ActionAnimation2D animation2D = GetActionAnimation(animActionType, dataId); if (animation2D != null) { AnimationClip2D anim = animation2D.GetClipByDirection(CurrentDirectionType); if (anim != null) { playingAction = true; AudioClip audioClip = animation2D.GetRandomAudioClip(); if (audioClip != null) { AudioSource.PlayClipAtPoint(audioClip, CacheTransform.position, AudioManager.Singleton == null ? 1f : AudioManager.Singleton.sfxVolumeSetting.Level); } // Waits by current transition + clip duration before end animation Play(anim); yield return(new WaitForSecondsRealtime(anim.duration / playSpeedMultiplier)); Play(idleAnimation2D, CurrentDirectionType); yield return(new WaitForSecondsRealtime(animation2D.extraDuration / playSpeedMultiplier)); playingAction = false; } } }
IEnumerator PlaySkillCastClipRoutine(int dataId, float duration) { CharacterAnimation2D animation2D; SkillAnimations2D skillAnimations2D; if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D)) { animation2D = defaultSkillActivateAnimation2D; } else { animation2D = skillAnimations2D.castAnimation; } if (animation2D != null) { AnimationClip2D anim = animation2D.GetClipByDirection(CurrentDirectionType); if (anim != null) { playingAction = true; Play(anim); yield return(new WaitForSecondsRealtime(duration)); Play(idleAnimation2D, CurrentDirectionType); playingAction = false; } } }
public void Play(AnimationClip2D anim) { if (anim == playingAnim) { return; } playingAnim = anim; spriteRenderer.flipX = anim.flipX; spriteRenderer.flipY = anim.flipY; secsPerFrame = 1f / anim.framesPerSec; currentFrame = -1; playing = true; nextFrameTime = Time.realtimeSinceStartup + secsPerFrame; }