Итак я вернулся к освоению конструктора 3D игр - MegaKerma. Сделал пару кривоватых моделек, набрал текстур, создал локацию, чтоб проверить как оно все смотрится "скомпилировал", запустил и обнаружил, что очень серьезно сказывается на атмосфере отсутствие каких-бы то ни было звуков. И вот решил исправить это начав с создания звука шагов протагониста. Оказалось это не так просто как я думал по началу - пришлось писать скрипт.
Для начала конечно же нужен сам звук шагов, я использовал даже два звука - звук одинарного шага и звук пары шагов. Первый проигрывается в случае если игрок нажимает кнопку ходьбы и тут же отпускает ее, так как если бы персонаж не успел сделать более шага, а пара шагов проигрывается во время более длительной прогулки персонажа. Импортируем звуки в MegaKerma, и запоминаем их названия (в моем случае они имеют названия 1_step и 2_steps).
Возвращаемся в главное меню и оттуда переходим к разделу "Scenes", где размещаем какие-либо объекты (лучше всего start), затем открываем окно свойств объекта, для чего нажимаем два раза пробел и кликаем ЛКМ по нужному объекту. Переходим во вкладку "Events" (События). Здесь нас интересуют два события: Step - это периодическое событие случающееся постоянно во время выполнения игры, с минимально возможным интервалом, и Timer1 - это событие происходящее один раз, по истечению таймера, параметры для работы, которого мы и установим в событии Step.
Итак выбираем событие Step, нажимаем кнопку "Edit..." и пишем туда следующий скрипт:
Подробную информацию о том что делает каждая строчка этого кода можно получить прочитав мануал MegaKerma, но в целом этот скрипт при нажатии клавиш, отвечающих за движение персонажа (WASD), сразу проигрывает звук одиночного шага (1_STEP, если у ваш звук называется по другому соответственно поменяйте название), а затем запускает Таймер1, а также проверяет нажатие левого шифта (бег) и уменьшает время на таймере (чтобы в случае бега шаги воспроизводились с меньшим интервалом, чем при ходьбе).
Теперь перейдем к скриптованию события Timer1, добавляем туда следующий скрипт:
IFKEYDOWN 42
SET run AS 1
ELSE
SET run AS 0
ENDIF
IFKEYDOWN 17
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 30
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 31
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 32
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
В данном событии мы проверяем остались ли клавиши зажатыми, и если это так переходим к воспроизведению звука пары шагов, а затем перезапускаем таймер, для воспроизведения звука следующих шагов.
Для начала конечно же нужен сам звук шагов, я использовал даже два звука - звук одинарного шага и звук пары шагов. Первый проигрывается в случае если игрок нажимает кнопку ходьбы и тут же отпускает ее, так как если бы персонаж не успел сделать более шага, а пара шагов проигрывается во время более длительной прогулки персонажа. Импортируем звуки в MegaKerma, и запоминаем их названия (в моем случае они имеют названия 1_step и 2_steps).
Возвращаемся в главное меню и оттуда переходим к разделу "Scenes", где размещаем какие-либо объекты (лучше всего start), затем открываем окно свойств объекта, для чего нажимаем два раза пробел и кликаем ЛКМ по нужному объекту. Переходим во вкладку "Events" (События). Здесь нас интересуют два события: Step - это периодическое событие случающееся постоянно во время выполнения игры, с минимально возможным интервалом, и Timer1 - это событие происходящее один раз, по истечению таймера, параметры для работы, которого мы и установим в событии Step.
Итак выбираем событие Step, нажимаем кнопку "Edit..." и пишем туда следующий скрипт:
Код
IFKEYPRESSED 42
SET run AS 1
ELSE
SET run AS 0
ENDIF
IFKEYPRESSED 17
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 30
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 31
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 32
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
SET run AS 1
ELSE
SET run AS 0
ENDIF
IFKEYPRESSED 17
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 30
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 31
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYPRESSED 32
PLAYSOUND 1_STEP
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
Подробную информацию о том что делает каждая строчка этого кода можно получить прочитав мануал MegaKerma, но в целом этот скрипт при нажатии клавиш, отвечающих за движение персонажа (WASD), сразу проигрывает звук одиночного шага (1_STEP, если у ваш звук называется по другому соответственно поменяйте название), а затем запускает Таймер1, а также проверяет нажатие левого шифта (бег) и уменьшает время на таймере (чтобы в случае бега шаги воспроизводились с меньшим интервалом, чем при ходьбе).
Теперь перейдем к скриптованию события Timer1, добавляем туда следующий скрипт:
Код
IFKEYDOWN 42
SET run AS 1
ELSE
SET run AS 0
ENDIF
IFKEYDOWN 17
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 30
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 31
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
IFKEYDOWN 32
PLAYSOUND 2_STEPS
TIMER1 50
IF run = 1
TIMER1 20
ENDIF
ENDIF
В данном событии мы проверяем остались ли клавиши зажатыми, и если это так переходим к воспроизведению звука пары шагов, а затем перезапускаем таймер, для воспроизведения звука следующих шагов.
Нет комментариев
К сожелению еще никто не добавил комментарий к даному материалу