如何更改和检测精灵颜色?

问题描述 投票:-1回答:1

我正在尝试制作一个游戏,如果您击中顶壁,则玩家球会改变颜色,而底壁会每半秒左右改变其颜色,您需要将玩家的球放在底壁上,同时颜色相同,反之亦然,我被困在可以检测和更改精灵颜色的部分上。我不太确定如何做这些事情,而且对制作游戏还是陌生的,因此,如果我无法回答某些评论,请原谅。

c# unity3d
1个回答
0
投票
   // your logic in Update method or if you use OnCollision/OnTrigger event
   // ...
        if(hasTakenDamageThisFrame)
        {
            // Play sound of taking damage
            StartCoroutine(ColorFlicker(duration, flickerCount, flickerColor));
        }
}

private IEnumerator ColorFlicker(float duration, int flickerCount, flickerColor)
{
    for (int i = 0; i < flickerCount; i++)
    {
        ChangeSpritesColor(playerSprites, flickerColor);
        yield return new WaitForSeconds(duration / (2 * flickerCount));
        ChangeSpritesColor(playerSprites, Color.white);
        yield return new WaitForSeconds(duration / (2 * flickerCount));
    }
}

private void ChangeSpritesColor(SpriteMeshInstance[] sprites, Color color)
{
    foreach (var sprite in sprites)
    {
        sprite.color = color;
    }
}

我希望这会有所帮助。请注意,这会从精灵渲染器更改您的“颜色”,因此与从材质(或着色器图形)更改它的方式不同。例如,Color.white将从渲染器中“删除”颜色修改,但是Color.Red不会使您的角色完全变成红色。我认为它将颜色乘以精灵的颜色。

© www.soinside.com 2019 - 2024. All rights reserved.