Урок посвящен добавлению звуковых и визуальных эффектов в игру. Научимся реализовывать звуковое сопровождение для различных игровых событий, а также создавать простой, но эффектный визуальный эффект столкновения.
Добавление звуковых эффектов
Необходимо скачать звуковые эффекты. Можно использовать любой интернет-ресурс, например, 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, и управлять жизненным циклом игровых объектов.