- Home /
Disable & Re-enable Script
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?
Answer by aldonaletto · Sep 03, 2011 at 05:44 PM
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); } }
Yeah it's the shoot script. Wait I'm confused about what that means about returning.
The instruction return makes Unity return from the routine, which aborts the rest of the code - thus it will not fire when space is pressed. I edited the answer to show the complete script.
Your answer
Follow this Question
Related Questions
disable/enable mouselook not working? 1 Answer
switch scripts? 1 Answer
Create a vector between me and my enemy. 1 Answer
disable/enable script js 2 Answers
Disable SCRIPT HELP!!!! 1 Answer