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