I have a shooting script. When my ship boosts, I want the player not to be able to fire. The problem is, when I boost, it disables the script, but when I stop boosting, the script doesn’t re-enable. How do I do this?
#pragma strict
var projectile : GameObject;
var fireRate : float = 0.5;
private var nextFire : float = 0.0;
function Update () {
if(Input.GetButton("Fire1") && Time.time > nextFire) {
nextFire = Time.time + fireRate;
var clone = Instantiate (projectile, transform.position, transform.rotation);
}
if(Input.GetKey("space")) {
GetComponent(Shoot).enabled = false;
}
if(Input.GetKeyUp("space")) {
GetComponent(Shoot).enabled = true;
}
}
Any idea why?
Is this the Shoot script? If it is, it can’t enable itself just because it doesn’t execute anymore after being disabled. You should not execute the firing code when the button “space” is pressed - maybe returning before shooting, like this:
if (Input.GetButton("space")) return;
if (Input.GetButton("Fire1")...
But if this is not the Shoot script, it would be better to use a boolean variable instead of enabling/disabling the whole script - something like this:
// replace the last two ifs with this statement
GetComponent(Shoot).disableShooting = Input.GetKey("space");
And in the Shoot script:
var disableShooting: boolean;
function Update(){
if (disableShooting) return;
// your shooting code goes here
}
EDITED: You just test if the button “space” is pressed, and do not execute the shooting code if it is, like below:
#pragma strict
var projectile : GameObject;
var fireRate : float = 0.5;
private var nextFire : float = 0.0;
function Update () {
// if space is pressed, return to abort the rest of Update
if(Input.GetKey("space")) return; // ends the Update routine
// if not, execute the rest of Update
if(Input.GetButton("Fire1") && Time.time > nextFire) {
nextFire = Time.time + fireRate;
var clone = Instantiate (projectile, transform.position, transform.rotation);
}
}