EDYTOWAĆ
Po przemyśleniu tego, jeśli nie dodajesz odcienia, ale używając oryginalnych kolorów grafiki, możesz po prostu (jak zaznaczam poniżej) wszystkie kolory rysowanych obiektów ustawić na zadeklarowaną zmienną Color ustawioną na biały. (Color NoTint = Color.White;), a następnie Lerp, że jeśli gracz żyje, jest równy zero. Każdy obiekt narysowany kolorem NoTint będzie powoli zmieniał się (zgodnie ze współczynnikiem interpolacji wymienionym poniżej) na cokolwiek, do czego go wybierasz.
Jeśli jednak masz różne odcienie na różnych obiektach, poniższa pętla foreach może działać.
Zakończ edycję
Przy mojej ograniczonej wiedzy spróbowałbym tego: zadeklaruj kolory używane podczas rysowania określonych obiektów, np. Color catColor = Color.Brown, a następnie dodaj wszystkie kolory gier do listy.
public static Color catColor = Color.Brown;
List<Color> colorList = new List<Color>(){ catColor }; // and other colors
float interpolation = 0f;
float interpolationRate = .01f;
.
.
.
if(playerLives == 0)
{
interpolation += interpolationRate;
if (interpolation >= 1)
{interpolation = 1;}
foreach(Color c in colorList)
{
Color.Lerp(c, Color.Gray, interpolation);
}
}
Możesz to zrobić nawet w przypadku przedmiotów, które rysujesz bez odcienia i Lerp the Color.White to a Color.Gray. (nazwij to jak Kolor NoTint = Color.White i umieść to na wszystkich rysowanych obiektach)
Prawdopodobnie jest lepszy sposób, niezależnie od tego, mam nadzieję, że to pomoże!