Эффекты в Unity: взрывы и следы
С помощью визуальных эффектов можно улучшить даже самую посредственную игру. Учимся создавать их на живых примерах.


vlada_maestro / shutterstock
Один из основных способов создания эффектов — использование спрайтов с анимацией. Для этого подготавливается префаб объекта, который нужно добавить на карту.
Например, так можно создать простой эффект взрыва. В качестве картинки можно применить любой подходящий спрайт.

Вырезав отдельные кадры, можно создать анимацию (читайте об этом в нашей статье). Добавьте объект на карту и укажите кадры, которые нужно анимировать.

Нарезав пять кадров из показанного выше спрайта, можно создать вот такую анимацию:

Проблема в том, что этот взрыв будет длиться вечно. Чтобы этого не происходило, нужно создать скрипт Explosion.cs и прописать в нем условие уничтожения эффекта. Например, его можно удалить по прошествии какого-нибудь времени. В данном случае можно указать 0,32 секунды — именно столько длится анимация.
public class Explosion : MonoBehaviour
{
void Start()
{
StartCoroutine(Explode()); //При создании объекта вызывается метод Explode().
}
IEnumerator Explode()
{
yield return new WaitForSeconds(0.3f); //Метод ждет 0,32 секунды, и только потом приступает к выполнению остального кода.
Destroy(gameObject); //Объект удаляется.
}
}
Эффект готов, теперь нужно только сохранить его как префаб, чтобы потом его можно было инстанцировать, когда он будет нужен.
Как добавить визуальный эффект в Unity
Рассмотреть добавление эффекта можно на примере шутера из этой статьи. В файле Bullet.cs при срабатывании триггера будет создаваться объект explosion.
void OnTriggerEnter2D(Collider2D hitInfo) //Пуля во что-то попала.
{
Health health = hitInfo.GetComponent<Health>();
if (health)
{
health.Hit(damage);
}
Explode(); //После того, как все основные действия выполнены, вызывается метод, отвечающий за взрыв.
}
void Explode()
{
Instantiate(explosion, transform.position, Quaternion.identity); //Создается экземпляр созданного префаба на том месте, куда попала пуля.
Destroy(gameObject); //Пуля уничтожается.
}
Предварительно нужно будет добавить префаб взрыва в поле explosion скрипта Bullet.cs. И после этого можно будет посмотреть на взрыв снаряда при попадании во что-нибудь.

Какие еще могут быть эффекты
Кроме префабов, в Unity можно использовать некоторые встроенные эффекты. Можно использовать объект Trail, чтобы добавить шлейф при движении какого-нибудь объекта. Для этого эффект нужно поместить внутрь чего-нибудь.

Ему можно указать толщину и цвет, а также время исчезновения и другие параметры. Больше ничего делать не нужно — шлейф сам будет следовать за объектом, к которому он прикреплен.

Это может пригодиться, например, чтобы сделать более выразительным полет пули или падение тлеющих обломков.
Заключение
Это только часть эффектов, которые можно реализовать в Unity. Кроме них, вы можете использовать шейдеры, частицы, свет и многое другое.
Подробнее обо всем этом вы можете узнать на курсе «Профессия разработчик игр на Unity». Там вы будете осваивать Unity, работая над реальными проектами, поэтому к концу курса не только научитесь создавать игры, но и соберете хорошее портфолио.