- Home /
The question is answered, right answer was accepted
Make damage with Coroutine.
Hi! I have this coroutine for a poison effect, the coroutine subtract life to the player and make a green effect changing the color sprite, but this happens in a one second more or less and the player's life goes down very fast. If posible to make the green flashes of the sprite last longer and put a time interval between each damage hit. (the typical poison effect, which flashes green and subtract life to player every x seconds) Thanks. :)
public IEnumerator PosionCo()
{
int temp = 0;
while (temp < numberOfPoison)
{
Health.Instance.health -= posionDmg;
playerSprite.color = poisonColor;
yield return new WaitForSeconds(poisonDuration);
playerSprite.color = normalColor;
yield return new WaitForSeconds(poisonDuration);
temp++;
}
}
I'm having a hard time understanding your problem, but there could be a few solutions.
How long is your poisonDuration? The coroutine looks fine to me.
Answer by Legend_Bacon · May 08, 2019 at 11:45 AM
Hello there,
To me, your coroutine looks fine as it is.
If it is still acting "too much", or "too fast", then I'd suggest adding a Debug.Log() within your while loop, outputting the remaining poison counter, current health, etc.
That way you can make sure that the coroutine isn't called too many times.
Also, try outputting "poisonDuration". Maybe it's set too low to notice the cooldown visually?
Hope that helps!
Cheers,
~LegendBacon
Follow this Question
Related Questions
Why doesn't a coroutine start executing from beginning when I start it again? 1 Answer
Coroutine Won't Stop Using IEnumerator 1 Answer
Coroutine randomly stops and continues after pausing and unpausing game 2 Answers
Why is my coroutine skipping a method? 1 Answer
Multiple coroutine exicution order 1 Answer