EDIT
Подумавши про це, якщо ви ні на що не наносите відтінок, але використовуючи оригінальні кольори графіки, ви могли б просто мати (як я констатую нижче) всі ваші кольори намальованих об'єктів, встановлених на оголошену зміну кольору, встановлену на білий. (Color NoTint = Color.White;), а потім Lerp, що якщо гравець живе, дорівнює нулю. Кожен об’єкт, намальований кольором NoTint, повільно змінюватиметься (відповідно до вашої швидкості інтерполяції, зазначеної нижче) до того, до чого ви його шукаєте.
Однак якщо у вас різні відтінки на різних об'єктах, нижній цикл передбачень може працювати.
Завершити редагування
З моїх обмежених знань, я б спробував це: оголосити кольори, які використовуєш для малювання конкретних об'єктів, напр. Color catColor = Color.Brown, а потім додайте до списку всі ваші кольори ігор.
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);
}
}
Ви можете навіть зробити це для предметів, які ви малюєте, без відтінку, і Lerp the Color.White to Color.Gray. (назвіть, що щось на зразок Color NoTint = Color.White, і покладіть це на всі ваші намальовані об'єкти)
Мабуть, є кращий спосіб, незалежно від того, я сподіваюся, що це допоможе!