CHỈNH SỬA
Sau khi suy nghĩ về nó, nếu bạn không đặt màu lên bất cứ thứ gì, nhưng sử dụng màu gốc của đồ họa bạn có thể có (như tôi nêu xuống bên dưới), tất cả màu sắc của các đối tượng được vẽ của bạn được đặt thành biến màu được khai báo thành màu trắng. (Color NoTint = Color.White;) và sau đó Lerp rằng nếu người chơi sống bằng 0. Mọi đối tượng được vẽ bằng Màu NoTint sẽ từ từ thay đổi (theo tỷ lệ nội suy của bạn được đề cập bên dưới) thành bất cứ điều gì bạn đang Lerping nó.
Tuy nhiên, nếu bạn có các sắc thái khác nhau trên các đối tượng khác nhau, vòng lặp foreach dưới đây có thể hoạt động.
Kết thúc chỉnh sửa
Trong kiến thức hạn chế của mình, tôi sẽ thử điều này: Khai báo màu bạn sử dụng khi vẽ các đối tượng cụ thể, ví dụ: Color catColor = Color.Brown, sau đó thêm tất cả các màu trò chơi của bạn vào danh sách.
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);
}
}
Bạn thậm chí có thể làm điều này cho các mục bạn vẽ mà không có tông màu và Lerp the Color.White to a Color.Gray. (đặt tên giống như Color NoTint = Color.White và đặt nó trên tất cả các đối tượng được vẽ của bạn)
Có lẽ có một cách tốt hơn, bất kể tôi hy vọng điều này sẽ giúp!