Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm trying to add a delay between player.healthDisplay.color = Color.green; and player.healthDisplay.color = Color.white; but at the moment yield return new WaitForSeconds(5); and player.healthDisplay.color = Color.white; aren't working.

Here's my code:

public void OnTriggerEnter2D(Collider2D other)
{
    if (other.CompareTag("Player"))
    {
        StartCoroutine(ColorChange());           
    }
}

IEnumerator ColorChange()
{
    player.health++;
    Instantiate(effect, transform.position, Quaternion.identity);
    Destroy(gameObject);
    player.healthDisplay.color = Color.green;
    //until here code the code is working

    yield return new WaitForSeconds(5);
                         
    player.healthDisplay.color = Color.white;
}
question from:https://stackoverflow.com/questions/66052635/unity-2d-waitforseconds-delay-isnt-working

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
256 views
Welcome To Ask or Share your Answers For Others

1 Answer

You are destroying the gameobject which has this script on it.

Destroy(gameObject);
// color changing code, etc..

Once the gameobject has been destroyed this script will no longer run.

What you can do instead (if you need this gameobject to be destroyed immediately) is add a script to health display that will handle the color change.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...