Обычный мой способ анимации объектов занимает довольно много кода и времени. Идея способа состоит в том, что назначаются объекту состояния (проявление альфы, изменение размера, прыжок, и.т.д ) и для каждого состояния я пишу свою логику. В итоге, для довольно сложной анимации приходится много писать.
И тут я обратил своё внимание на свой же класс системы частиц :) Для сложных эффектов я ввёл в класс понятие "временных полос". Суть их в чём. Работают они у меня на основе ассоциативного массива. В качестве ключа у меня стоит время. Допустим нужно создать объект с альфой 0 и за 2 секунды проявить его до 200. С помощью таймлайна это делается следующим образом:
//Инициализация C_Timeline Alpha; Alpha.Set(0.0f,0.0f) время и значение Alpha.Set(2.0f,200.0f) время и значение LifeTime=0.0f; //время жизни //Update LifeTime += FrameTime; //FrameTime - время рендера предыдущего кадра ObjectAlpha = Alpha.Get(LifeTime);
В этом коде, когда LifeTime будет равен 1, ObjectAlpha будет равно 100.
Так вот, посмотрел я на этот код и написал класс анимации, с использованием этих таймлайнов. Количество кода, необходимого для анимации, снизилось в разы. Результатом доволен :)
Комментариев нет:
Отправить комментарий