コード例 #1
0
 void FixedUpdate()
 {
     if (Target == null)
     {
         agent.SetDestination(StartPos);
         if (agent.remainingDistance > agent.stoppingDistance)
         {
             Anim.SetBool("Running", true);
         }
         else
         {
             Anim.SetBool("Running", false);
         }
         Hit = Physics.OverlapSphere(transform.position, SpottingDistance, layerMask);
         foreach (Collider target in Hit)
         {
             if (target.gameObject != this.gameObject && target.tag == "NPC" && !FriendlyList.Contains(target.name))
             {
                 if (!FriendlyList.Contains(target.name))
                 {
                     ReturnToPosition = false;
                     Target           = target.transform;
                     EquippedHammer.SetActive(true);
                     UnEquippedHammer.SetActive(false);
                     break;
                 }
             }
         }
     }
     else if (Target != null)
     {
         if (!IsAtTarget)
         {
             agent.SetDestination(Target.position);
         }
         if (agent.remainingDistance > agent.stoppingDistance)
         {
             Anim.SetBool("Running", true);
             IsAtTarget = false;
             float Distance = Vector3.Distance(transform.position, Target.position);
             if (Distance > 25)
             {
                 EnemyDied(null);
             }
         }
         else if (!IsAtTarget && agent.remainingDistance > 0.1f)
         {
             IsAtTarget = true;
             Anim.SetBool("Running", false);
             AtTarget();
         }
     }
 }
コード例 #2
0
 void FixedUpdate()
 {
     if (Target == null)
     {
         agent.SetDestination(StartPos);
         if (agent.remainingDistance > agent.stoppingDistance)
         {
             Anim.SetBool("Running", true);
         }
         else
         {
             Anim.SetBool("Running", false);
         }
         Hit = Physics.OverlapSphere(transform.position, SpottingDistance, layerMask);
         foreach (Collider target in Hit)
         {
             if (target.gameObject != this.gameObject && target.tag == "NPC")
             {
                 if (!FriendlyList.Contains(target.name))
                 {
                     ReturnToPosition = false;
                     Target           = target.transform;
                     //if (target.name != "Player")
                     //   target.GetComponent<BaseNPC>().OnDeath += EnemyDied;
                     EquippedHammer.SetActive(true);
                     UnEquippedHammer.SetActive(false);
                     break;
                 }
             }
         }
     }
     else if (Target != null)
     {
         agent.SetDestination(Target.position);
         if (agent.remainingDistance > agent.stoppingDistance)
         {
             //agent.isStopped = false;
             Anim.SetBool("Running", true);
             IsAtTarget = false;
         }
         else if (!IsAtTarget && agent.remainingDistance > 0.1f)
         {
             IsAtTarget = true;
             //agent.isStopped = true;
             Anim.SetBool("Running", false);
             //transform.LookAt(Target);
             AtTarget();
         }
     }
 }
コード例 #3
0
 public override void EnemyDied(BaseNPC Sender)
 {
     //Sender.OnDeath -= EnemyDied;
     //if(agent.isOnNavMesh)
     //agent.isStopped = false;
     //Target = null;
     //if (Anim != null)
     //{
     //    Anim.SetBool("Running", false);
     //    Anim.SetBool("Attacking", false);
     //}
     if (this != null)
     {
         EquippedHammer.SetActive(false);
         UnEquippedHammer.SetActive(true);
         IsAtTarget       = false;
         ReturnToPosition = true;
         base.EnemyDied(null);
     }
 }