Плавное изменение цвета

Сегодня мне понадобилось написать функцию которая сделает плавный переход одного цвета в другой на движке 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);

}


Комментарии

Популярные сообщения из этого блога

Пишем невероятно простой и опасный вирус на C#.

Пишем сайты на C# или используем C# вместо JavaScript.

Пишем онлайн кликер на "чистом" C#