- Home /
Battery resource that decreases over time
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.
Answer by aldonaletto · Dec 08, 2013 at 04:51 PM
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.
Answer by hd27 · Dec 08, 2013 at 04:02 PM
You can give the flash light an on and off boolean and also a starting number, Example:
bool isOn = true;
float flashlightPower = 10;
Then you can decrease the power and turn the flashlight off at zero power:
void Update(){
flashlightPower -= Time.deltaTime;
if(flashlightPower <= 0){
isOn = false;
}
}
When you pick a new battery you can reset the power:
void OnTriggerEnter(Collision coll){
if(coll.transform.tag == "battery"){
flashlightPower += 10;
}
}
I hope this helps!
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
lighting click help 3 Answers
Making a Top 10 score page 2 Answers
Can someone help me fix my Javascript for Flickering Light? 6 Answers
Click Submit, then check 0 Answers