- Home /
Default Values? (on by default/off by default)
Hello! I am trying to create an FPS game. I have made a flashlight that works with the press of a button to turn it on and off. My only problem is that I don't want the flashlight to be turned on when I start the playmode. I want it to be turned off by default.
I tried boolean = false ; but it just said the "boolean is not assigned to". I am pretty new to Unity. Can anyone help? Heres my script :
private var flashlight : Light;
function Start () {
flashlight = GetComponent("Light");
}
function Update () {
if (Input.GetKeyDown("g")) {
if (flashlight.enabled) {
flashlight.enabled = false;
} else {
flashlight.enabled = true;
}
}
}
Answer by aldonaletto · Oct 10, 2012 at 12:11 AM
You could simply disable it at Start - and just toggle enabled at Update:
private var flashlight : Light;
function Start () {
flashlight = GetComponent("Light");
flashlight.enabled = false; // turn it off at Start
}
function Update () {
if (Input.GetKeyDown("g")) {
// toggle enabled:
flashlight.enabled = !flashlight.enabled;
}
}
@aldonaletto Hello your are a great help to many of us here, I have the same issue with the flashlight being on when the game starts I got this flashlight script and modified it for my needs I added the piece you left on top as an answer but the light is still on when the game starts, here is the script I am using.
//Name this script Flashlight and attach it to your player for instance
var switchsound : AudioClip;
var lightSource : Light; //Connect the light source in the Inspector
static var energy : float = 0; //The energy amount of the flashlight
static var turnedOn : boolean = true; //Boolean to check whether it's turned on or off
private var drainSpeed : float = 2.0; //The speed that the energy is drained
function Update () {
if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.F)) ToggleFlashlight();
}
//When the player press F we toggle the flashlight on and off
function ToggleFlashlight () {
audio.PlayOneShot(switchsound);
turnedOn=!turnedOn;
if (turnedOn && energy>0) {
TurnOnAndDrainEnergy();
} else {
lightSource.enabled = false;
}
}
//When the flashlight is turned on we enter a while loop which drains the energy
function TurnOnAndDrainEnergy () {
lightSource.enabled = true;
while (turnedOn && energy>0) {
energy -= drainSpeed*Time.deltaTime;
yield;
}
lightSource.enabled = false;
}
//This is called from outside the script to alter the amount of energy
static function AlterEnergy (amount : int) {
energy = $$anonymous$$athf.Clamp(energy+amount, 0, 100);
}
function OnGUI () {
GUI.Label (Rect (10, 10, 150, 20), Flashlight.energy.ToString());
}
private var flashlight : Light;
How would I go about implementing something so the flashlight is off when the level starts? $$anonymous$$uchas gracias for all your help.
Just initialize turnedOn to false in the declaration:
static var turnedOn : boolean = false; //Boolean to check whether it's turned on or off
But since turnedOn is static, it will keep its value across level changes. If you want it to start each level turned off, set the variable to false at Start too:
function Start(){
turnedOn = false;
}
It's better to keep the initialization to false anyway, because without this you may have the flashlight on for a while when the first level is loaded.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Can you help me find the script error please? 1 Answer
Creating Loading Bar For web Player 1 Answer
Problem in 2D Gun Rotation 1 Answer
IndexOutOfRangeException: Array index is out of range 0 Answers