角色变成纯黑色而不是恢复到原来的样子

Character turning solid black instead of reverting to original

在计时器结束之前,角色会变成透明,然后不会弹回到原来的颜色,而是变成纯黑色。

    private Color c;

    void Start(){
    c = thePlayer.rend.color;
    }

public void HurtPlayer(int damageToTake)
    {
        healthCount -= damageToTake;
        UpdateHeartMeter ();
        StartCoroutine ("iFrames");
    }

    IEnumerator iFrames(){
            Physics2D.IgnoreLayerCollision (10, 11, true);
            c.a = 0.5f;
            thePlayer.rend.color = c;
            yield return new WaitForSeconds (2f);
            c.a = 1f;
            thePlayer.rend.color = c;
            Physics2D.IgnoreLayerCollision (10, 11, false);
    }

示例:https://imgur.com/a/jFKXvhW

这段代码对我有用我不确定你是如何访问 SpriteRenderer 问题的。我只是通过点击一个按钮来启动协程,因为我不知道你什么时候应用它。此代码附加到 Sprite。

private Color c;
// Use this for initialization
void Start () {
    c = gameObject.GetComponent<SpriteRenderer>().color;
}

// Update is called once per frame
void Update () {
    if(Input.GetKeyDown(KeyCode.Mouse0))
    {
        StartCoroutine("ChangeColor");
    }
}
IEnumerator ChangeColor()
{
    c.a = 0.5f;
    gameObject.GetComponent<SpriteRenderer>().color = c;
    yield return new WaitForSeconds(2);
    c.a = 1f;
    gameObject.GetComponent<SpriteRenderer>().color = c;
}