Hello, I’m looking to have sort of flashlight in my game. I’m trying to get it to work so that you have a battery indicator somewhere on the screen, and that will deplete over time.
When the battery runs out, the flashlight(a spotlight in my case) will turn off.
Another part which I considered, but don’t know how to do, is that when you drive over a battery on the ground, the indicator would fill and if it was empty, turn on the light.
I have the basic idea of triggering things when you drive over them and such, but I have no idea how to script all the other stuff.
I’m not sure if it’s demanding a lot, as I’m horrible at programming and I’m only doing this for a rough demo of a game I thought of.
You could do the following: create the flashlight (a spotlight) and child it to the player, then adjust its position and orientation. The code that controls the flashlight, battery and pickups could be as follows (attached to the player):
public var flashlight: Light; // drag here the light from Hierarchy view
public var fullCharge: float = 100; // full charge = 100%
public var drainSpeed: float = 1.5; // drain speed = 1.5% per second
public var charge: float;
function Start(){
charge = fullCharge; // battery full at start
}
function Update(){
if (Input.GetKeyDown("f")){ // F toggles flashlight on/off
lightOn = !lightOn;
}
if (lightOn && charge > 0){ // if flashlight on...
charge -= Time.deltaTime * drainSpeed; // drain charge
if (charge < 0) charge = 0; // clamp charge to zero
}
// update flashlight status
flashlight.enabled = lightOn && charge > 0;
}
function OnTriggerEnter(other: Collider){
if (other.CompareTag("Battery")){ // if trigger is tagged Battery...
charge = fullCharge; // replace old batteries with a new one...
Destroy(other.gameObject); // and destroy the pickup
}
}
function OnGUI(){
// show the charge
GUI.Label(Rect(10,10,100,30), charge.ToString("F0")+"%");
}
If you want a bar graph instead of simple numbers, take a look at this question.