Привет, друг! Мы продолжаем наш цикл статей про разработку своего рогалика. На прошлом уроке мы разобрались, как добавлять врагов и делать их появление. Сегодня мы займемся добавлением звуков и музыки.
Для начала скачаем или создадим музыку и звуки, которые могут быть нам необходимы. Gamemaker поддерживает mp3 файлы. Их и скачаем.
Я скачал парочку треков, которые подойдут как музыка и еще несколько для звуков появления монстров.
Как добавить звуки в Gamemaker?
Для начала создадим “Звук” в папке звуки.
Появится окно для создания “Звука”. В Gamemaker музыка и звуки - это одно и тоже в логике движка. Давайте переименуем нашу первую музыку. Я назвал ее “mForest” - музыка Леса.
Теперь нажмем на верхнюю правую кнопку с многоточием. Эта кнопка переведет вас в проводник, в котором вы сможете выбрать нужный звук или музыку.
Все настройки тут связаны с сжатием. Музыка и звуки весят очень много и занимают много места. Поэтому имеет смысл уменьшать качество в угоду размера файла.
Моно, стерео и 3D звук — это различные форматы звукового воспроизведения, которые отличаются по способу передачи и восприятия звука.
Моно звук представляет собой одноканальный звук. Это означает, что звук воспроизводится через один источник, и все звуковые данные передаются в одном канале. При прослушивании моно звука не создается эффекта пространственного звучания, и звук воспринимается как исходящий из одной точки.
Стерео звук использует два канала (левый и правый), что позволяет создать эффект пространственного звучания.
Это достигается за счет различия в уровне и времени прихода звука в оба уха, что помогает создать ощущение ширины и глубины звукового пространства.
Стерео звук часто используется в музыке и кино, чтобы сделать прослушивание более погружающим.
3D звук (или пространственный звук) идет еще дальше, чем стерео, и может использовать несколько каналов (например, 5.1 или 7.1 системы) для создания более сложного звукового окружения.
Он позволяет звуку перемещаться в трехмерном пространстве, что дает возможность точно позиционировать звуки вокруг слушателя. Это особенно важно в видеоиграх и виртуальной реальности, где игроки могут воспринимать звуки, исходящие из разных направлений и расстояний.
3D звук может использовать технологии, такие как HRTF (Head-Related Transfer Function), чтобы имитировать, как звуки воспринимаются человеческим ухом в зависимости от их источника.
В общем, основное отличие между этими форматами заключается в количестве каналов и способности создавать пространственное звучание, что влияет на восприятие звука слушателем.
При этом важно понимать, что для нашей игры хватит и стерео, 3д здесь не будет. Стерео оставит качество, но моно сократит размер во много раз.
Интервал выборки, качество и скорость в битах - это тоже настройки для качества и размера.
Добавить музыку или звуки, просто перенеся их в комнату, не выйдет.
Тогда, нам нужен объект, который будет выполнять функции по воспроизведению музыки.
Создадим новый объект “oMusicManager” - объект контролирования музыки.
Давайте сделаем его “постоянным”, нажав на галочку.
Это позволит нам перенести этот объект только в первую комнату, а в другие комнаты он сам будет себя клонировать. Удобно!
Давайте подумаем логически. Какое событие нам подойдет?
Мы хотим воспроизводить музыку когда мы заходит в новую локацию-комнату.
Для этого подойдет и любимый наш “шаг”, но он будет проверять информацию каждый кадр. 60 раз в секунду, в нашем случае.
Это никуда не годится, зачем же нам тратить столько ресурсов, когда нам нужно проверять информацию только при переходах в комнаты?
Для наших целей нам подойдет событие “Начало рума”. Оно находится в вкладке “Другое”.
Код в событии начало рума выполняется только в начале загрузки локации.
В этом событии мы с вами запишем простую конструкцию.
Скажем, что если мы заходим в комнату “Название вашей первой локации”(у меня называется rForest), то включается нужная нам музыка - mForest.
Так и запишем:
if room == rForest
{
audio_play_sound(mForest,0,0);
}
audio_play_sound функция, которая имеет 3 обязательных аргумента для функционирования:
С помощью этой функции мы можем легко добавлять новые треки и звуки, куда захотим!
Давайте протестируем. Добавьте этот объект в первую комнату и запустим.
Всё работает!
Теперь давайте добавим еще один трек и попробуем добавить еще одну музыку, но в другую комнату. Покажу, как сделать так, чтобы предыдущий трек остановился.
Чтобы включить трек mForest2 в rForest2 нам просто нужно повторить это условие, но если мы протестируем, мы заметим, что во второй комнате теперь будет играть 2 трека.
Давайте добавим новое событие: “Конец рума”. В нем мы будем останавливать ненужные треки!
if room != rForest
{
audio_stop_sound(mForest)
}
Е
сли комната не равна rForest, то останови mForest.
Обращу внимание, что восклицательный знак перед равенством означает “не”.
Можно еще использовать audio_stop_all() чтобы закончить воспроизведение всех треков.
Ну и есть очень удобная !audio_is_playing(mForest).
Если комната(rForest) и трек не воспроизводится(mForest), то воспроизведи mForest.
Соответственно, мы теперь можем и звуки где угодно добавлять.
Покажу, как добавить звук при выстреле.
Можно добавить этот звук в шаге игрока, при выстреле, а можно прям при появлении пули. Вариант один и тот же.
Заходим в событие “создать” у пули и пишем
audio_play_sound.
Всё! Сегодня вот такая простая тема!
Подписывайся на мою группу ВК: https://vk.com/oliora.
И не пропускай следующие мои туториалы!
Ссылка на следующий урок: Урок 08. Переход в другие комнаты - https://cr5.space/h/ru-gamemaker/post/9
Peace!