Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 public void TrySetAnimationState(ActionAnimationState animState, FacingDirection facing, float animationSpeed)
 {
     actorAnimator.SetAnimationState(animState, facing, animationSpeed);
 }
Exemplo n.º 4
0
 public void TrySetAnimationState(ActionAnimationState animState, FacingDirection facing)
 {
     actorAnimator.SetAnimationState(animState, facing);
 }
Exemplo n.º 5
0
 public void TrySetAnimationState(ActionAnimationState animState)
 {
     actorAnimator.SetAnimationState(animState, currentFacing);
 }
Exemplo n.º 6
0
 public bool SetAnimationState(ActionAnimationState newAnimationState, FacingDirection facing, float animationSpeed)
 {
     animator.speed = animationSpeed;
     return(SetAnimationState(newAnimationState, facing));
 }