Эффекты в Unity: взрывы и следы

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

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

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

Евгений Кучерявый

Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.


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

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

Проблема в том, что этот взрыв будет длиться вечно. Чтобы этого не происходило, нужно создать скрипт 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 — главный язык гейм-девелопмента. Изучив его основы, вы сможете дальше развиваться в игровой индустрии, а со временем даже устроиться на работу в студию мечты или стать инди-разработчиком. Это универсальный движок для создания игр для компьютеров, консолей и мобильных устройств, самый востребованный на рынке.

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox
Cannot find 'new.sale.action' template with page ''