Beispiel #1
0
        // === Animation === //

        public void PlayRandomAnimation(AIBehaviors fsm)
        {
            if (animationStates.Length > 0)
            {
                int randAnimState = (int)(Random.value * animationStates.Length);

                fsm.PlayAnimation(animationStates[randAnimState]);
            }
        }
Beispiel #2
0
        // === Animation === //

        public void PlayRandomAnimation(AIBehaviors fsm)
        {
            int animationIndex = 0;

            if (animationStates.Length > 0)
            {
                animationIndex = (int)(Random.value * animationStates.Length);
            }

            fsm.PlayAnimation(animationStates[animationIndex]);
        }
Beispiel #3
0
        protected override void Action(AIBehaviors fsm)
        {
            Transform target = fsm.GetClosestPlayer(objectFinder.GetTransforms());
            string    attackAnimationName = animationStates[0].name;
            bool      useAnimationTime    = skinnedMeshRenderer == null || skinnedMeshRenderer.isVisible;

            if (!useAnimationTime && attackAnimation != null)
            {
                useAnimationTime = attackAnimation.cullingType == AnimationCullingType.AlwaysAnimate;
            }

            if (target != null)
            {
                HandlePreviousStateMovement(fsm, target);
            }

            AIAnimationState animState = fsm.animationStates.GetStateWithName(attackAnimationName);

            fsm.PlayAnimation(animState);

            if (scriptWithAttackMethod != null)
            {
                if (!string.IsNullOrEmpty(methodName))
                {
                    if (useAnimationTime && attackAnimation != null && attackAnimation[attackAnimationName] != null)
                    {
                        curAnimPosition = attackAnimation[attackAnimationName].normalizedTime % 1.0f;
                    }
                    else
                    {
                        curAnimPosition %= 1.0f;
                        curAnimPosition += Time.deltaTime / animationLength;
                    }

                    if (previousSamplePosition > attackPoint || curAnimPosition < attackPoint)
                    {
                        previousSamplePosition = curAnimPosition;
                        return;
                    }

                    previousSamplePosition = curAnimPosition;

                    TriggerCooldown();
                    Attack(fsm, target);
                }
            }
        }