コード例 #1
0
 public void AttackEnemy(NpcBase defender, Action onAttackCompleted)
 {
     this.GetAnimator().SetBool("isWalking", true);
     if (this.AttackDamage() > defender.EvadeDamage())
     {
         Vector3 slideTargetPosition = defender.transform.position;
         SlideToPosition(slideTargetPosition, () =>
         {
             state = EState.Busy;
             defender.OnDamageReceived(this.AttackDamage() - stats.dexterity / 2);
             AnimAttack(() =>
             {
                 this.GetAnimator().SetBool("isAttacking", false);
                 SlideToPosition(startPosition, () =>
                 {
                     state = EState.Idle;
                     this.GetAnimator().SetBool("isWalking", false);
                     onAttackCompleted();
                 });
             });
         });
     }
     else
     {
         Vector3 slideTargetPosition = defender.transform.position;
         SlideToPosition(slideTargetPosition, () =>
         {
             state = EState.Busy;
             defender.GetAnimator().SetBool("Duck", true);
             print(this.stats.npcName + " Missed " + defender.stats.npcName + "!");
             AnimAttack(() =>
             {
                 this.GetAnimator().SetBool("isAttacking", false);
                 SlideToPosition(startPosition, () =>
                 {
                     state = EState.Idle;
                     defender.GetAnimator().SetBool("Duck", false);
                     this.GetAnimator().SetBool("isWalking", false);
                     onAttackCompleted();
                 });
             });
         });
     }
 }