- Home /
How to lose a specific amount of health over time
So when my character gets hit by the enemies fire breath, I want to create the feel of the character being set on fire. So while the character is on fire I want him to lose a specific amount of health over a specific amount of time.
For example; lets say he is on fire for 3 seconds and I want to make him lose 30 health for being on fire, how would I evenly distribute losing 30 health for 3 seconds? I dont want the 30 damage to be applied instantly to the health, I want it to slowly tick away at the players health so that at the 3 second mark 30 damage has been dealt.
Thanks.
Answer by unidad2pete · Aug 17, 2017 at 02:19 PM
public float health = 1000; // health of player
public float dmgTick = 100; // Damage each tick
public float timeXTick = 1; // Time in seconds each tick of damage
public int totalTicks = 3; // how many seconds ( ticks ) 100 damage each tick
IEnumerator DmgXSecond()
{
int ticks = 0;
int totalTicksTemp = totalTicks;
while (ticks < totalTicksTemp)
{
ticks++;
health -= dmgTick; // Player recive 100 damage
yield return new WaitForSecondsRealtime(timeXTick); // wait 1 second
}
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine("DmgXSecond"); // If Hit Space, 3 ticks of 100 dmg each second.
}
}
Answer by Laurence_B · Aug 17, 2017 at 01:50 PM
private float timeLeft;
private bool losingHealth;
void Start(){
timeLeft=30f;
losingHealth = false;
}
void Update()
{
if (losingHealth==true){
timeLeft -= Time.deltaTime;
CharacterHealth -= Time.deltaTime; //to round it use: Mathf.Round (Time:deltaTime* 10f) / 10f;
if ( timeLeft < 0 )
{
losingHealth=false;
}
}
Your answer
Follow this Question
Related Questions
Health Regeneration 2 Answers
Increase health smoothly not instantly? 2 Answers
How can i make my health regenerate? 1 Answer
Health Degeneration script degening to fast 1 Answer
Health Regeneration Issues. 2 Answers