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