Exemplo n.º 1
0
        public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            if (string.IsNullOrEmpty(animationData.animationName))
            {
                animationData = GM.GetAnimationData(originalAnimationName);
            }
            if (ai == null)
            {
                ai = animator.GetComponent <AI.BaseAI>();
            }
            if (attackCollider == null)
            {
                attackCollider = GM.FindChildWithTag("AttackCollider", animator.transform).transform;
            }
            if (speedMultiplier > 0)
            {
                animator.SetFloat("specialAttackMultiplier", speedMultiplier);
            }
            else
            {
                speedMultiplier = 1.0f;
            }

            var dmgTmng = damageTiming * (1.0f / speedMultiplier);

            attackTimer = Time.time + dmgTmng;
            enabled     = true;
        }
Exemplo n.º 2
0
        public void PlayAttackAnimation(PlayerControl.AttackAnimationSetting animationName, ref bool isCanAttack)
        {
            if (baseAI.isAttacking || baseAI.isUsingSpecialAttack)
            {
                return;
            }

            if (baseAI.isTakingDamage || baseAI.isTakingDamageBIG || baseAI.isDeath)
            {
                return;
            }
            if (baseAI.isBlockImpact || baseAI.isBlockImpactBIG || baseAI.isBlockImpactAIR || baseAI.isRolling || baseAI.isDodging)
            {
                return;
            }
            if (isCanAttack == false)
            {
                return;
            }
            if (!isThisTheBestTimeToAttack)
            {
                return;
            }

            if (baseAI.isBlocking)
            {
                baseAI.isBlocking = false;
            }

            if (baseAI.animator.GetLayerWeight(baseAI.animator.GetLayerIndex("Attack")) != 1.0f)
            {
                baseAI.animator.SetLayerWeight(baseAI.animator.GetLayerIndex("Attack"), 1.0f);
            }

            baseAI.animator.Play(animationName.animationName);
            currentAnimation = animationName;

            if (currentAnimation.damageTiming2 != 0)
            {
                isFirstHit  = true;
                isSecondHit = true;
            }
            else
            {
                isFirstHit  = true;
                isSecondHit = false;
            }

            baseAI.isAttacking = true;
            sw.Restart();
            damaging = true;
        }
Exemplo n.º 3
0
        private void DoDamage(PlayerControl.AttackAnimationSetting attackAnimationSetting)
        {
            var cols = Physics.OverlapSphere(attackCollider.transform.position, .5f, LayerMask.GetMask("Player"));

            if (cols.Length == 0)
            {
                return;
            }

            for (int x = 0; x < cols.Length; x++)
            {
                var playerInfo = cols[x].GetComponent <PlayerInfo>();
                PlayerControl.Attack.lastEnemyAttackedYou = this.transform;
                playerInfo.DoDamage(baseAI.baseStatus.AT * attackAnimationSetting.attackMultiplier);
            }
        }
Exemplo n.º 4
0
        public void PlayTimer(PlayerControl.AttackAnimationSetting animationInfo)
        {
            currentAnimation = animationInfo;

            if (currentAnimation.damageTiming2 != 0)
            {
                isFirstHit  = true;
                isSecondHit = true;
            }
            else
            {
                isFirstHit  = true;
                isSecondHit = false;
            }

            damaging = true;
            sw.Restart();
            baseAI.isAttacking = true;
        }
Exemplo n.º 5
0
        private void GetAnimation(ref PlayerControl.AttackAnimationSetting[] me, string[] stringCompare, PlayerControl.AttackAnimationSetting[] lookUp)
        {
            if (stringCompare.Length == 0)
            {
                return;
            }

            me = new PlayerControl.AttackAnimationSetting[stringCompare.Length];

            for (int x = 0; x < stringCompare.Length; x++)
            {
                for (int y = 0; y < lookUp.Length; y++)
                {
                    if (lookUp[y].animationName == stringCompare[x])
                    {
                        me[x] = lookUp[y];
                        break;
                    }
                }
            }
        }