BEARBEITEN
Nachdem Sie darüber nachgedacht haben, können Sie, wenn Sie nichts einfärben, aber die Originalfarben der Grafik verwenden, alle Farben der gezeichneten Objekte auf eine deklarierte Farbvariable setzen, die auf Weiß gesetzt ist (siehe unten). (Color NoTint = Color.White;) und dann Lerp, dass, wenn der Spieler lebt, gleich Null ist. Jedes mit der NoTint-Farbe gezeichnete Objekt ändert sich langsam (entsprechend der unten angegebenen Interpolationsrate) in das Objekt, in das Sie es einfügen.
Wenn Sie jedoch unterschiedliche Farbtöne für verschiedene Objekte haben, funktioniert die folgende foreach-Schleife möglicherweise .
Bearbeiten beenden
In meinem begrenzten Wissen würde ich Folgendes versuchen: Deklarieren Sie die Farben, die Sie beim Zeichnen bestimmter Objekte verwenden, z. Color catColor = Color.Brown, und fügen Sie dann alle Farben Ihrer Spiele zu einer Liste hinzu.
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);
}
}
Sie können dies sogar für Elemente tun, die Sie ohne Farbton zeichnen, und die Color.White auf Color.Gray setzen. (Nennen Sie das etwas wie Color NoTint = Color.White und setzen Sie das auf alle Ihre gezeichneten Objekte)
Es gibt wahrscheinlich einen besseren Weg, auch wenn ich hoffe, dass dies hilft!