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 и счетчик, и посмотрите, сможете ли вы в этом разобраться.)