- Home /
How to deplete health every second
Im trying to deplete the health of the player by 1 for every second they are in the gassed environment. However with what i have at the moment the health keeps jumping up and down randomly and has left me puzzled as to whats going on.
the code i have so far is as follows:
public var exposure = 802;
function Update ()
{
if(exposure > -260)
{
exposure = Time.time - exposure;
//print("bar length " + transform.localScale.x); //check players health.
transform.localScale = new Vector3(exposure / 3000f,0,transform.localScale.z); //change scale of healthbar
}
if(exposure <= 799)
{
//print("your in shelter, now your exposure will reganerate"); //check players health.
exposure++;
transform.localScale.x += (exposure / 1275000f); //change scale of healthbar
}
}
Anyone know how I might go around fixing this?
Answer by Montraydavis · Nov 01, 2012 at 04:21 PM
Really not sure what your code above is doing . . .But, try this:
var Health : float = 100 ;
function Update ( ){
Health -= 1 * Time.deltaTime ;
}
You can add in your if statements to determine when this happens . Also, change the '1 ' to 'x ' whatever amount per second you want to deduct health.
That will deplete health by 1 every second . That's all it takes :D Hope this helps .
Answer by sfc.itzhak · Nov 01, 2012 at 04:25 PM
just create a function that yields every 1 second. this will remove health every 1 second
bool IsRemovingHealth=false;
function Update ()
{
if(exposure > -260)
{
if(!IsRemovingHealth)
{
StartCoroutine(REmoveHealth());
}
}
if(exposure <= 799)
{
//print("your in shelter, now your exposure will reganerate"); //check players health.
exposure++;
transform.localScale.x += (exposure / 1275000f); //change scale of healthbar
}
}
IEnumerator REmoveHealth()
{
IsRemovingHealth=true;
while(exposure > -260 && isRemovingHealth)
{
exposure = Time.time - exposure;
//print("bar length " + transform.localScale.x); //check players health.
transform.localScale = new Vector3(exposure / 3000f,0,transform.localScale.z); //change scale of healthbar
yield return new WaitForSeconds(1f);
}
IsRemovingHealth=false;
}
i wrote it in the web so there maybe some typos.
Sfc