Sonic. Делаем плавную камеру в Simple Sonic Worlds

Предисловие

В этом уроке вы научитесь создавать плавную камеру. Плавная камера, не прицеплена к игроку, она следует за ним с определенной задержкой. Но, перед созданием плавной камеры, научимся создавать обычную .

Создаем простую камеру.

Перво наперво, избавимся от обычной камеры. Для этого, де-активируем группу [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%)

Теперь, объект камеры, плавно следует за игроком.

Если игрок не умер, то устанавливаем фрейм на месте, созданного объекта камеры. Теперь, запустим.

Все работает. Осталось сделать объект камеры невидимым.

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!