Turret Range Script

I’me using the Tornado Twins turret script which I slightly modified. The problem is that the lasers shoot at you, no matter how far away you are. I need them only to shoot at a specified range. How can I do that? Here’s the script:

var LookAtTarget : Transform;
var damp : float = 6.0;
var bulletPrefab : GameObject;
var savedTime = 0;

function Update ()
{
     if(LookAtTarget)
     {
          var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position); 
          transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp); 
          var seconds : int = Time.time;
          var oddeven = (seconds % 2);
          if(oddeven) 
              Shoot(seconds);
          transform.LookAt(LookAtTarget);
     }

}

function Shoot(seconds)
{
     if(seconds!=savedTime)
     {
          var bullet = Instantiate(bulletPrefab,transform.Find("spawnPoint").transform.position , transform.rotation);
     }


     savedTime=seconds;

}

Vector3.Distance will measure the distance between the gameObject its attached to and whatever other GameObject you want. You need to measure the distance between the two and then tell the script that if the distance is less then whatever, then do this.
You’d do that by doing something like this:

var distanceTillShoot : float;
var LookAtTarget : Transform;

function Whatever(){
var distance = Vector3.Distance(LookAtTarget.transform.position, transform.position);
if (distance <= distanceTillShoot){
//your function
   }
}

You seem pretty new to scripting so here’s how your script should look:

var distanceTillShoot : float;
var LookAtTarget : Transform;
var damp : float = 6.0;
var bulletPrefab : GameObject;
var savedTime = 0;

function Update ()
{
     if(LookAtTarget)
     {
          var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position); 
          transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp); 
          var seconds : int = Time.time;
          var oddeven = (seconds % 2);
          if(oddeven) 
              Shoot(seconds);
          transform.LookAt(LookAtTarget);
     }

}

function Shoot(seconds)
{
 var distance = Vector3.Distance(LookAtTarget.transform.position, transform.position);
   if (distance <= distanceTillShoot){
     if(seconds!=savedTime)
     {
          var bullet = Instantiate(bulletPrefab,transform.Find("spawnPoint").transform.position , transform.rotation);
     }


     savedTime=seconds;
    }
}

good luck

Use Vector3.Distance.