- Home /
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;
}
I know this is pretty broad but, I'm trying to learn how to do this, but this feature needs to be completed ASAP. That's why I'm asking.
Answer by FTheCloud · Aug 15, 2011 at 07:02 AM
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
Your answer
Follow this Question
Related Questions
Turret Script Problem 2 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Turret shooting at me 1 Answer
Script so that, my enemies only see my player at a certain range. 4 Answers
Turret Shooting 1 Answer