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; }
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; }
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); } }
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; }
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; } } } }