Сигнальная ракета в Unity
Недавно делал для своего авиасимулятора миссию с доставкой айрдропа. Место сброса груза было решено обозначать сигнальной ракетницей. На создание такой ракеты у меня ушло удивительно мало усилий, поэтому делюсь своей придумкой.
Для реалистичного сигнального дыма необходима соответствующая текстура с альфа-каналом. Я взял её здесь.
Создаём материал с этой текстурой — он пригодится при настройке партиклов.
Для обозначения траектории я сделал в Blender анимацию, которая, по моему представлению, показывает, как должна лететь ракета. В случае, если нужна более сложная реализация траектории, этот вариант не подойдёт. Например, если вы делаете FPS-шутер, где нужно стрелять из ракетницы в любом направлении, логику снаряда нужно описывать отдельно — согласно вашей механике.
Выгружаем FBX из Blender в Unity. Объект вытаскиваем на сцену — это основа нашего будущего префаба. Назначаем ему компонент Animator и создаём для него пустой Animator Controller. Внутри этого контроллера создаём новое пустое состояние и указываем для него анимацию из FBX-файла.
Теперь, если мы запустим сцену, кубик будет двигаться так же, как в Blender. Повторюсь: если вы задаёте траекторию иначе, эти пункты с анимацией для вас неактуальны.
Переходим к эффектам. Создаём дочерний пустой объект у кубика. В него добавляем компоненты Particle System и Light.
Для Particle System назначаем материал дыма, а настройки делаем примерно как на скриншотах.
Тут можно поиграть с параметрами времени жизни, скорости, или размером. Это всё очень интересно может влиять на эффект
Свет делаем ярче, и настраиваем желаемый цвет
После этих манипуляций рендер самого кубика нужно выключить — он нам не нужен.
Теперь нужно сделать так, чтобы ракета со временем пропадала. Для этого я написал примитивный MonoBehaviour.
Привожу его код ниже. Его нужно повесить на родительский объект, указать время жизни и объект с эффектом (он нужен, чтобы постепенно снижать яркость света).
Как итог, мы довольно быстро получили достоверный эффект сигнальной ракеты. Меня немного смущает использование партиклов, которые требуют много ресурсов, но иного способа сделать подобный эффект я не нашёл.
Всем спасибо за внимание! Подписывайтесь, чтобы регулярно читать о разработке моего аркадного авиасимулятора. Я ещё и в телеге есть :)