角色变成纯黑色而不是恢复到原来的样子
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);
}
这段代码对我有用我不确定你是如何访问 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;
}
在计时器结束之前,角色会变成透明,然后不会弹回到原来的颜色,而是变成纯黑色。
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);
}
这段代码对我有用我不确定你是如何访问 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;
}