ant0N | Дата: Воскресенье, 26 Февраля 2012, 14:44 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| введение
Звук уступает только зрению, он является одним из самых важный органов чувств. В играх, звук передает информацию об окружающем, как и где мы находимся, и даже из чего сделаны окружающие нас материалы. Звук в двигателе Leadwerks представлен с OpenAL.
Использование звуков
Звук в Leadwerks Engine легко загружать и воспроизводить: Code sound=LoadSound("abstract::reload.ogg") PlaySound(sound)
Для более полного управления звуком, мы должны вызвать CreateSource и вернуться источника звука. Созданный сточник не будет играть, пока мы не скомандуем. Это делается для того, чтобы мы могли изменять настройки, пока звук молчит:
Code sound=LoadSound("abstract::reload.ogg") source=CreateSource(sound) PlaySource(source)
Давайте послушаем звуки в действии. Начните с этой простой программы, которая позволит загружать и воспроизводить звук:
Code require("Scripts/constants/engine_const") Graphics(800,600) RegisterAbstractPath("")
fw = CreateWorld()
cam = CreateCamera() CameraClearColor(cam,Vec4(0,0,1,1))
sound = LoadSound("abstract::reload.ogg") source = CreateSource(sound) PlaySource(source)
--главный цикл while KeyHit(KEY_ESCAPE)==0 do fw:Update() fw:Render() Flip(1) end
Управление звуком Мы можем воспроизводить, приостанавливать, возобновлять и останавливать любой источник звука в любое время. Когда мы вновь воспроизводим источник, он перематывается на начало звука и начинает играть снова. Добавьте этот код в основной цикл и запустить программу. Каждый раз, когда вы нажимаете клавишу P звук будет играть с самого начала:
Code if KeyHit(KEY_P)==1 then PlaySource(source) end
Для циклического воспроизведения звука, мы можем указать флаг SOURCE_LOOP при создании источника. Измените код, чтобы соответствовало этому: Code source = CreateSource(sound,SOURCE_LOOP)
Мы можем приостановить, возобновить, и даже получить текущее состояние источника. Когда мы возобновим источник, который был приостановлен, звук играет с позиции где мы остановились его, а не перематывается. Добавьте этот код в главный цикл, и вы сможете сделать паузу и возобновить источник нажатием на пробел.
Code if KeyHit(KEY_SPACE)==1 then if GetSourceState(source)==SOURCE_PLAYING PauseSource(source) else ResumeSource(source) end end
Можно также настроить параметры, как уровень громкость. Объявить эту переменную до основного цикла: local pitch =1.0
Теперь добавьте этот код в главном цикле. Теперь вы можете управлять звуком с помощью клавиш + и - на цифровой панели клавиатуры:
Code if KeyDown(KEY_NUMADD)==1 then pitch=pitch+0.001 SetSourcePitch(source,pitch) end if KeyDown(KEY_NUMSUBTRACT)==1 then pitch=pitch-0.001 SetSourcePitch(source,pitch) end
Полный код:
Code require("Scripts/constants/engine_const")
Graphics(800,600) RegisterAbstractPath("")
fw = CreateWorld()
cam=CreateCamera() CameraClearColor(cam,Vec4(0,0,1,1))
sound=LoadSound("abstract::reload.ogg") source= CreateSource(sound, SOURCE_LOOP)
local pitch = 1.0
while KeyHit(KEY_ESCAPE)==0 do
if KeyHit(KEY_P)==1 then PlaySource(source) end
if KeyHit(KEY_SPACE)==1 then if GetSourceState(source) == SOURCE_PLAYING then PauseSource(source) else ResumeSource(source) end end
if KeyDown(KEY_NUMADD)==1 then pitch = pitch + 0.001 SetSourcePitch(source, pitch) end if KeyDown(KEY_NUMSUBTRACT)==1 then pitch = pitch - 0.001 SetSourcePitch(source, pitch) end
fw:Update() fw:Render() Flip(1) end
Добавлено (26.02.2012, 14:44) --------------------------------------------- отныне уроки будут публиковаться на этом сайте http://leadwerks.ru кто может помогите с переводом статей с оф сайта
Blender 3D, Godot Engine, LUA
Сообщение отредактировал ant0N - Воскресенье, 22 Апреля 2012, 12:01 |
|
| |