Code (csharp): var attackRange = 30.0; var shootAngleDistance = 10.0; var target : Transform; var target2 : Transform; function Start(){ transform.LookAt(target2); } function Update(){ if (target == null GameObject.FindWithTag("Finish")) { target = GameObject.FindWithTag("Finish").transform; } if (!CanSeeTarget ()) return; if (target == null GameObject.FindWithTag("Finish")){ target = GameObject.FindWithTag("Finish").transform; } // Rotate towards target var targetPoint = target.position; var targetRotation = Quaternion.LookRotation (targetPoint - transform.position, Vector3.up); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 2.0); // If we are almost rotated towards target - fire one clip of ammo var forward = transform.TransformDirection(Vector3.forward); var targetDir = target.position - transform.position; if (Vector3.Angle(forward, targetDir) < shootAngleDistance) SendMessage("Fire"); } function CanSeeTarget () : boolean { if (Vector3.Distance(transform.position, target.position) > attackRange) return false; var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit)) return hit.transform == target; return false; } the script above is the script i use for my sentrygun . It will detect the monster itself and shoot'em. The problem is here,when i have just a spawn point, it will detect the monster and shoot it, no problem. But when i duplicate another spawn point(means having 2 spawn point now), the sentry will only detect the 2nd spawn point's monster first, after killing it then only goes back to the first spawn point's monster. So i try doing this, i made a spawn point, duplicate it, and place the 2nd spawn point far far away, so result was the sentrygun will wait the 2nd spawn point's monster to arrive and kill it and ignore the monster from the first spawn point which came first, and when they killed the one far far away, then it only turn back and shoot the first spawn point's one. any idea? :?