Предисловие
В этом уроке вы научитесь создавать плавную камеру. Плавная камера, не прицеплена к игроку, она следует за ним с определенной задержкой. Но, перед созданием плавной камеры, научимся создавать обычную .
Создаем простую камеру.
Перво наперво, избавимся от обычной камеры. Для этого, де-активируем группу [CCS] Classic Camera System.
Теперь код в группе [CCS] Classic Camera System, выполнятся не будет. При запуске видим, что камера больше, не следует за игроком.
Далее сделаем так, что-бы наша камера (фрейм), следовал за игроком. Для этого, в Always эвенте, добавьте действие (Action) скролла, относительно позиции игрока.
В итоге получилось следующее
Теперь, камера будет следовать за игроком всегда. И это проблема, ведь нам не нужно, что-бы камера следовала за игроком, после смерти (игрок проваливается под пол).
Что-бы исправить этот баг, нужно проверить, умер ли игрок или нет.
Если игрок умер, то в объекте Player_MovementValues, переменная Action, становится равной 9-ти (потому-что, так работает движок). То-есть, нам нужно передвигать камеру, только если, Action не равен 9 (игрок не умер).
Готово, теперь, камера не преследует игрока до самой смерти. С основой разобрались, переходим к созданию плавной камеры
Создаем плавную камеру
Создайте активный объект, он будет нашей камерой. Разместите его в любом месте.
И перепишите следующий скрипт.
В событии (эвенте) Start of Frame, я поставил камеру, в том месте, где находится игрок. И отключил классическую камеру.
Логика плавной камеры, находится в Always эвенте. Там, я перемещаю позицию камеры, используя lerp функцию, давайте разберем её подробно.
Что такое lerp?
lerp — это сокращение от Linear Interpolate, или линейная интерполяция. На практике, данная функция, делает движение более плавным.
Синтаксис функции lerp, следующий:
float lerp(from, to, percentage)
- from — начальное значение
- to — конечное значение
- percentage — процент, на который увеличится from, относительно to. То-есть from, в данном случае 0%, а to будет 100%.
Приведу пример использования lerp.
lerp(10, 20, 0.5)
lerp вернет значение 15, потому что мы увеличили число 10, на 50% (0.5), относительно числа 20. В нашем случае, 20 это 100%, а 10 это 0%.
Кстати код функции lerp, выглядит так.
float lerp(float from, float to, float percentage)
{
return from + percentage * (to - from);
}
Продолжаем разбирать камеру.
К сожалению, clickteam не поддерживает функции (у него, даже, нет языка программирования). Поэтому нужно приравнивать формулу.
from + percentage * (to - from)
К координатам X и Y камеры.
В этой формуле мы указали:
- from — позиция камеры.
- to — позиция игрока.
- percentage — 0.1 (10%)
Теперь, объект камеры, плавно следует за игроком.
Если игрок не умер, то устанавливаем фрейм на месте, созданного объекта камеры. Теперь, запустим.
Все работает. Осталось сделать объект камеры невидимым.