Среда, 20 Ноября 2024, 06:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
урок по Leadwerks Engine
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг