Коллективный блог (старый)

Итак я вернулся к освоению конструктора 3D игр - MegaKerma. Сделал пару кривоватых моделек, набрал текстур, создал локацию, чтоб проверить как оно все смотрится "скомпилировал", запустил и обнаружил, что очень серьезно сказывается на атмосфере отсутствие каких-бы то ни было звуков. И вот решил исправить это начав с создания звука шагов протагониста. Оказалось это не так просто как я думал по началу - пришлось писать скрипт.

Для начала конечно же нужен сам звук шагов, я использовал даже два звука - звук одинарного шага и звук пары шагов. Первый проигрывается в случае если игрок нажимает кнопку ходьбы и тут же отпускает ее, так как если бы персонаж не успел сделать более шага, а пара шагов проигрывается во время более длительной прогулки персонажа. Импортируем звуки в 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

Подробную информацию о том что делает каждая строчка этого кода можно получить прочитав мануал 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

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

Нет комментариев

К сожелению еще никто не добавил комментарий к даному материалу

omForm">
avatar