/// <summary> /// AnimationState should == animationKey! then we can eliminate the need for manual input of string. /// </summary> /// <param name="animationState"></param> /// <param name="animationKey"></param> /// <param name="hasFacing"></param> public void AddAnimations(ActionAnimationState animationState, bool hasFacing = true) { string animationKey = animationState.ToString().ToLower(); if (hasFacing) { animationStateHashes[animationState] = new Dictionary <FacingDirection, int>(); foreach (FacingDirection facing in (FacingDirection[])System.Enum.GetValues(typeof(FacingDirection))) { switch (facing) { case FacingDirection.Right: animationStateHashes[animationState][facing] = Animator.StringToHash(animationPrefix + animationKey + "_" + "left"); break; case FacingDirection.DownRight: animationStateHashes[animationState][facing] = Animator.StringToHash(animationPrefix + animationKey + "_" + "downleft"); break; case FacingDirection.UpRight: animationStateHashes[animationState][facing] = Animator.StringToHash(animationPrefix + animationKey + "_" + "upleft"); break; default: animationStateHashes[animationState][facing] = Animator.StringToHash(animationPrefix + animationKey + "_" + facing.ToString().ToLower()); break; } } } else { animationStateHashes[animationState] = new Dictionary <FacingDirection, int>(); foreach (FacingDirection facing in (FacingDirection[])System.Enum.GetValues(typeof(FacingDirection))) { animationStateHashes[animationState][facing] = Animator.StringToHash(animationPrefix + animationKey); } } }
/// <summary> /// Returns true if animation was set. /// </summary> /// <param name="newAnimationState"></param> /// <param name="facing"></param> /// <returns></returns> public bool SetAnimationState(ActionAnimationState newAnimationState, FacingDirection facing) { if (newAnimationState != currentAnimationState || actor.currentFacing != facing) { if (!TryGetValue(animationStateHashes, newAnimationState, facing, out int animHash)) { Debug.LogWarning("ActorAnimator for " + gameObject.name + " has no animation for " + newAnimationState + " : " + facing); // fallback or continue in current? return(false); } switch (facing) { case FacingDirection.Right: case FacingDirection.UpRight: case FacingDirection.DownRight: //spriteRenderer.flipX = true; transform.localRotation = Quaternion.AngleAxis(180, Vector3.up); break; default: //spriteRenderer.flipX = false; transform.localRotation = Quaternion.AngleAxis(0, Vector3.up); break; } animator.Play(animHash); currentAnimationState = newAnimationState; actor.currentFacing = facing; return(true); } return(false); }
public void TrySetAnimationState(ActionAnimationState animState, FacingDirection facing, float animationSpeed) { actorAnimator.SetAnimationState(animState, facing, animationSpeed); }
public void TrySetAnimationState(ActionAnimationState animState, FacingDirection facing) { actorAnimator.SetAnimationState(animState, facing); }
public void TrySetAnimationState(ActionAnimationState animState) { actorAnimator.SetAnimationState(animState, currentFacing); }
public bool SetAnimationState(ActionAnimationState newAnimationState, FacingDirection facing, float animationSpeed) { animator.speed = animationSpeed; return(SetAnimationState(newAnimationState, facing)); }