Beispiel #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();
         }
     }
 }
Beispiel #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();
         }
     }
 }
Beispiel #3
0
    void FixedUpdate()
    {
        if (IsFrozen)
        {
            return;
        }
        if (Target == null)
        {
            agent.SetDestination(Commander.position);
            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 (target.gameObject.name != "Player" && !target.GetComponent <BaseNPC>().HasTarget || target.name == "Commander")
                    {
                        target.GetComponent <BaseNPC>().HasTarget = true;
                        Target = target.transform;

                        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();
            }
        }
    }
Beispiel #4
0
 private void Roam()
 {
     agent.speed = WalkSpeed;
     if (Roaming)
     {
         agent.SetDestination(WalkToPoint);
         if (agent.remainingDistance > agent.stoppingDistance)
         {
             Anim.SetBool(RoamingAnim, true);
         }
         else if (agent.remainingDistance > 0.1f)
         {
             Anim.SetBool(RoamingAnim, false);
             Roaming = 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))
                 {
                     Target = target.transform;
                     break;
                 }
             }
         }
     }
     else
     {
         if (Physics.Raycast(Spawner.Pos() + new Vector3(0, 10, 0), Vector3.down, out hit, 11))
         {
             if (hit.collider.name == "Terrain")
             {
                 WalkToPoint = hit.point;
                 Roaming     = true;
             }
         }
     }
 }