Unity - Введение в звук

Есть причина, по которой игры делают упор на аудио; очень важно придать игре эстетическую ценность. С самого первогоPong, можно услышать гудки и гудки от мяча, попеременно ударяющего по лопастям. В то время это был действительно простой образец с короткой прямоугольной волной, но чего еще вы могли желать от деда всех видеоигр?

В реальной жизни многие вещи влияют на то, как вы воспринимаете звук; скорость объекта, в каком сценарии он находится и в каком направлении он движется.

Есть ряд факторов, которые могут создать ненужную нагрузку на наш двигатель. Вместо этого мы пытаемся создать представление о том, как наш звук будет работать в нашей игре, и строим его вокруг. Это особенно заметно в трехмерных играх, где нужно иметь дело с тремя осями.

В Unity есть специальные компоненты для восприятия и воспроизведения звука. Эти компоненты работают вместе, чтобы создать правдоподобную звуковую систему, естественную для игры.

Unity предоставляет нам множество полезных инструментов и эффектов, таких как реверберация, эффект Доплера, микширование и эффекты в реальном времени и т. Д. Мы узнаем об этом в наших последующих главах.

Аудио компоненты

В этом разделе мы узнаем о трех основных компонентах, связанных со звуком в Unity.

AudioSource

Компонент AudioSource - это основной компонент, который вы присоедините к GameObject, чтобы он воспроизводил звук. Он будет воспроизводитьAudioClip при запуске через микшер, через код или по умолчанию, когда он просыпается.

AudioClip - это просто звуковой файл, загружаемый в AudioSource. Это может быть любой стандартный аудиофайл, например .mp3, .wav и так далее. AudioClip - это тоже компонент внутри себя.

AudioListener

AudioListener - это компонент, который listensко всему звуку, воспроизводимому в сцене, и передает его на динамики компьютера. Он действует какearsигры. Все звуки, которые вы слышите, относятся к позиции этого AudioListener. Для правильной работы в сцене должен быть только один AudioListener. По умолчанию к основной камере прикреплен Listener. Слушатель не имеет открытых свойств, о которых хотел бы позаботиться дизайнер.

Аудио фильтры

Вывод AudioSource или прием AudioListener можно изменить с помощью аудиофильтров. Это особые компоненты, которые могут изменять реверберацию, хорус, фильтрацию и так далее. Каждый конкретный фильтр представляет собой отдельный компонент с выставленными значениями, позволяющими настроить его звучание.

Воспроизведение звука

Давайте попробуем сделать кнопку, которая воспроизводит звук при нажатии. Для начала мыCreate спрайт круга и сделайте его красным.

Теперь давайте прикрепим Audio Source к этому спрайту.

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

http://www.orangefreesounds.com/ding-sfx/

Загрузите звуковой эффект и перетащите его в Assets.

Когда Unity импортирует этот ресурс в виде звукового файла, он автоматически преобразуется в AudioClip. Поэтому вы можете перетащить этот звуковой клип из Assets прямо в слот Audio Clip в Audio Source нашего спрайта.

После того, как вы перетащите звуковой клип из Assets непосредственно в слот Audio Clip в Audio Source нашего спрайта, не забудьте снять флажок «Play on Awake» в свойствах Audio Source; в противном случае звук будет воспроизводиться в момент запуска игры.

Теперь давайте перейдем к нашему коду. Создайте новый скрипт под названием «BellSound» и откройте его.

Поскольку наш источник звука управляется с помощью кода, мы хотим сначала получить ссылку на него. Как и раньше, мы будем использовать метод GetComponent.

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent<AudioSource>();
}

Теперь давайте настроим метод обнаружения объекта, по которому щелкают. MonoBehaviour дает нам именно тот метод, который нам нужен для этого, с именем OnMouseDown. Метод вызывается всякий раз, когда мышь щелкает в диапазонеcollider этого gameObject.

Поскольку мы еще не прикрепили коллайдер к нашей кнопке, давайте сделаем это сейчас.

Для этого нам не понадобится Rigidbody; нам также не нужно обращаться к этому коллайдеру по коду. Он просто должен быть там, чтобы метод работал.

Давайте протестируем метод и посмотрим, работает ли он. Напишите следующий код в своем скрипте и прикрепите его к кнопке.

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

Как только вы сохраните сценарий и прикрепите его, играйте в игру. При нажатии на кнопку в консоли должно появиться сообщение.

Теперь вы в одном шаге от воспроизведения звука. Все, что вам нужно сделать сейчас, это позвонить вPlay в экземпляре Audio Source.

void OnMouseDown() {
   mySource.Play();
}

Сохраните ваш скрипт и запустите его в игре. Нажмите на кнопку, и вы должны услышать звук!

Note- Подумайте о том, чтобы сделать кнопку, которая повышается по высоте при каждом нажатии на нее. ИспользоватьmySource.pitch и счетчик, и посмотрите, сможете ли вы в этом разобраться.)