So after I have a flashlight after I make hastorch = true which kinda works but the torch does not stay on. Sorry about the long post.
Here is my FlashLight script.
var lightSource : Light;
static var EnergyPerBattery : float = 75;
static var BatteriesLeft : int = 0;
static var turnedOn : boolean = false;
private var drainSpeed : float = 0.5;
static var hastorch = false;
function Update () {
if(hastorch == true){
if (Input.GetKey(KeyCode.F)) ToggleFlashlight();
}
}
function ToggleFlashlight(){
if(hastorch == true){
turnedOn=!turnedOn;
if(turnedOn && EnergyPerBattery>0){
TurnOnAndDrainEnergy();
}
}
else{
lightSource.enabled = false;
}
}
function TurnOnAndDrainEnergy () {
lightSource.enabled = true;
while (turnedOn && EnergyPerBattery>0) {
EnergyPerBattery -= drainSpeed*Time.deltaTime;
yield;
}
lightSource.enabled = false;
}
function OnGUI(){
GUI.Box (Rect (Screen.width - 100,Screen.height - 50,100,50), EnergyPerBattery.ToString());
}
static function AlterEnergy (amount : int){
}
Here is my PickUpTorchScript
var batteryPower : int = 10;
var hit : RaycastHit;
var mesh : GameObject;
var Range : float = 1;
var LookingAt = false;
var Destroyed = false;
function Update (){
var fwd = transform.TransformDirection (Vector3.forward);
var hit : RaycastHit;
if(Physics.Raycast (transform.position, fwd, hit, Range)){
Debug.DrawRay(transform.position, fwd * Range, Color.red);
if( hit.collider.gameObject.tag == "Torch"){
LookingAt = true;
if(Input.GetKeyDown(KeyCode.E)){
Destroy(mesh);
Destroyed = true;
LookingAt = false;
}
else if( hit.collider.gameObject.tag == null){
LookingAt = false;
}
}
}
if(Destroyed == true){
FlashLight.BatteriesLeft += 1;
FlashLight.hastorch = true;
}
}
function OnGUI(){
if(LookingAt == true){
GUILayout.BeginArea (Rect((Screen.width/2)-50, (Screen.height/2) , 100, 100));
GUILayout.Label ("E To Interact");
GUILayout.EndArea ();
}
}