Unity: Звуковые и визуальные эффекты в играх (Урок 6)

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

Добавление звуковых эффектов

Необходимо скачать звуковые эффекты. Можно использовать любой интернет-ресурс, например, Mixkit.com (предлагаются бесплатные звуки). В уроке используются следующие звуки:

  • car crash – звук столкновения автомобилей.
  • car horn – звук автомобильного сигнала.
  • car start – звук запуска двигателя.
  • click – звук нажатия кнопки.

Создайте в Unity папку Sounds и поместите в неё скачанные звуковые файлы.

Звук нажатия кнопки

Простейший эффект – звук нажатия кнопки (click). Добавьте звуковой эффект click к объекту кнопки (Start Game). Снимите галочку Play on Awake, чтобы звук не проигрывался при создании объекта. Добавьте дополнительное действие при нажатии на кнопку, обратившись к AudioSource и вызвав функцию Play().

Поскольку при нажатии кнопка скрывается, звук может не проигрываться. Для решения проблемы, скопируйте компонент AudioSource с кнопки и добавьте его на объект Canvas (или любой другой постоянно видимый объект). Теперь при нажатии на кнопку, обращайтесь к AudioSource на Canvas для проигрывания звука.

Звуки автомобилей

Добавьте компонент AudioSource к каждому из четырёх автомобилей. Снимите галочку Play on Awake.

В скрипте CarController создайте приватное поле AudioSource audio; и публичные поля AudioClip audioStart и AudioClip audioCrash для звуков запуска и столкновения соответственно.

В методе Awake() найдите и сохраните компонент AudioSource.

В функции OnMouseDown(), после проверки действий, установите audio.clip = audioStart; и запустите звук audio.Play();. Желательно перед запуском нового звука останавливать предыдущий: audio.Stop();.

Аналогично, в функции OnTriggerStay(), после проверки столкновения, установите audio.clip = audioCrash;, остановите предыдущий звук и запустите новый.

Для предотвращения многократного воспроизведения звука при длительном столкновении, добавьте проверку: if (audio.clip != audioCrash && !audio.isPlaying) перед установкой и воспроизведением audioCrash.

Перетащите звуковые файлы Car Start и Car Crash в соответствующие поля в Unity для каждого автомобиля.

Звук автомобильного сигнала (фон)

Для непрерывного воспроизведения звука сигнала (car horn) создайте пустой объект Sound Controller с компонентом AudioSource и Audio Listener. Добавьте звуковой эффект Car Horn к AudioSource. Снимите галочку Play on Awake. Превратите Sound Controller в префаб.

Создайте скрипт CreateSoundObject, который будет создавать этот префаб на сцене при запуске игры и помечать его DontDestroyOnLoad. В скрипте используйте статическую переменную isCreated для предотвращения повторного создания объекта при перезагрузке сцены.

Создайте скрипт BG Sound, который будет проигрывать звук car horn через случайные промежутки времени (от 5 до 8 секунд) с помощью корутины. Добавьте этот скрипт к префабу Sound Controller.

Добавление визуального эффекта столкновения

Создайте визуальный эффект взрыва (particle system) Crush Effect. Настройте параметры Emission (используйте Burst), Gravity Modifier, скорость, время жизни частиц. В Renderer установите созданный материал Crush Effect (красный, прозрачный). Измените Render Mode на Mesh и выберите форму частиц (например, куб). Создайте из эффекта префаб.

В скрипте CarController создайте поле ParticleSystem crashEffect. В функции OnTriggerStay() создайте экземпляр префаба crashEffect в точке столкновения, установите вращение (-90 по оси X, или 270 для корректной работы) и уничтожьте его через 2 секунды с помощью Destroy().

В уроке были добавлены звуковые и визуальные эффекты, улучшившие игровую атмосферу. Научились работать со звуком, создавать и использовать particle system, и управлять жизненным циклом игровых объектов.

Что будем искать? Например,программа