I have a working flashlight script that drains out the energy of my flashlight and turns it off, I want to fix some things, any suggestions will help a lot:)
- When the power of the flashlight goes out, i can still press f and hear the sound of the button to turn the flashlight on/of… How do i disable it until my flashlight has energy again??
2)I have another Script to pick up a flashlight object that i made by going through the object, the script goes attached to the player and the object must have a “FlashLight” tag. I would like that when i pick up this item, just then the first script gets activated, so then i can press “f” to turn the flashlight on and start draining it’s batteries
3)I would prefer to pick the flashlight up by pressing “e” near it…
Thats all, If anyone can help me in any of the 3 problems it will mean a lot:)
The FlashlightPickUp Script(attached to the player):
private var hit : RaycastHit;
private var rayDistance : float;
private var contactPoint : Vector3;
var PickupSound: AudioClip;
function OnTriggerEnter (other : Collider) {
if (other.CompareTag ("Flashlight")) {
audio.PlayOneShot(PickupSound);
Destroy(other.gameObject);
}
}
The FlashLight Script, wich drains energy and can be turned on/off with “f” key:
var lightSource : Light; //Connect the light source in the Inspector
var shootSound:AudioClip;
static var energy : float = 100; //The energy amount of the flashlight
static var turnedOn : boolean = false; //Boolean to check whether it's turned on or off
private var drainSpeed : float = 9.0; //The speed that the energy is drained
lightSource.enabled = false;
function Update () {
if (Input.GetKeyDown(KeyCode.F)) ToggleFlashlight();
}
//When the player press F we toggle the flashlight on and off
function ToggleFlashlight () {
turnedOn=!turnedOn;
audio.PlayOneShot(shootSound);
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;
//I tried here with-----> shootSound.enable = false; ,it didn't work
}
//This is called from outside the script to alter the amount of energy
static function AlterEnergy (amount : int) {
energy = Mathf.Clamp(energy+amount, 0, 100);
}