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. :slight_smile:

 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++;
        }
    }

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