Плавное изменение цвета
Сегодня мне понадобилось написать функцию которая сделает плавный переход одного цвета в другой на движке Unity. Так как вариаций подобного много я хочу предложить свою.
Color32 SmoothColorChange(Color32 from, Color32 to, float speed)
{
if (from!=to)
{
speed=speed*Time.fixedDeltaTime
Color32 result = new Color32
{
r = Mathf.Lerp(from.r, to.r, speed);
g = Mathf.Lerp(from.g, to.g, speed);
b = Mathf.Lerp(from.b, to.b, speed);
return result;
};
}
else
return to;
}
А теперь пример использования. Ну например задний фон который постоянно изменяет свой цвет.
Color32 RandomColor;
Camera cam;
void Start()
{
cam=GetComponent<Camera>();
cam.backgroundColor = RandomColor = Color32.White;
}
void Update()
{
if (RandomColor==cam.backgroundColor)
RandomColor= GenerateRandomColor();
else
{
cam.backgroundColor=SmoothColorChange(cam.backgroundColor, RandomColor, 1f);
}
}
Color32 GenerateRandomColor()
{
return new Color32(Random.Range(0,255),Random.Range(0,255),Random.Range(0,255), 255);
}
Комментарии
Отправить комментарий