Proposta:
Mostrar como carregar e posicionar sons 3D.
Em
nosso último tutorial nós mostramos a você como criar e atirar um
projétil de arma. Este tutorial adicionará efeitos de som para
tornar o seu tiro mais dinâmico. Pelo fato de nós estarmos usando
as variáveis "CameraAngle" com grande freqüência, nós
abreviamos seus nomes para tornar mais fácil a leitura do código.
Load sound "crickets.wav",1
Loop sound 1
Antes
de nós explicarmos o som 3D nós iremos adicionar um som de
ambiente ao jogo. O comando "Load Sound" carregar um som
para o seu programa mas não o executa. O primeiro parâmetro neste
comando é o nome do arquivo de som que você deseja carregar. Como
com qualquer comando onde arquivos são carregados, você deve
colocar o nome do arquivo entre aspas ("Nome do arquivo").
O segundo parâmetro no comando é o número do som. O DarkBASIC usa
este número da mesma maneira usada quando você carrega objetos ou
imagens. Este número será um identificador único para o som. O
comando "Loop Sound" usa um parâmetro: o número do som
que você deseja executar. Este comando executa o som especificado
de forma contínua. Usando estes comandos você escutará o som de
grilos e cigarras.
Load 3Dsound "fireball2.wav",2
O
comando "Load 3DSound" carrega o som que nós desejamos
usar para o nosso tiro. O primeiro parâmetro neste comando é o
nome do arquivo que nós queremos carregar (entre aspas) e o segundo
parâmetro é o número que nós queremos usar para identificar o
som. Quando nós carregamos um som como 3D, nós estamos informando
ao DarkBASIC que nós desejamos colocar o som em um ponto específico
do espaço 3D.
Rem Rotaciona câmera
if cAX#>270
if cAX#-270 > 90 then cAX#=270
else
if cAX# > 90 and cAX#-270<270 then cAX#=90
endif
YRotate camera CurveAngle(cAY#,oldcAY#,24)
XRotate camera CurveAngle(cAX#,oldcAX#,24)
Esta
seção é adicionada ao jogo para manter o jogador do lado superior
da rotação da câmera. Os ângulos da câmera também são necessários
para guardar a posição correta do ouvinte para o som 3D.
Rem Posição do ouvinte
Position Listener X#,Y#+50,Z#
Rotate Listener 0,cameraAngleY#,0
O
comando "Position Listener" é usado para posicionar o seu
som 3D. Os três parâmetros após o comando são usados para
designar as posições X, Y e Z onde você deseja colocar o ouvinte.
Nós iremos usar a mesma posição que a câmera. O comando
"Rotate Listener" é usado para rotacionar o ouvinte. Este
comando usa três parâmetros: os ângulos X, Y e Z que você deseja
rotacionar o ouvinte. Para manter a direção do ouvinte a mesma da
câmera, nós mantemos os ângulos X e Z como 0 e só lidamos com o
eixo Y. Para o valor Y nós usamos a variável
"CameraAngleY#".
Rem Tiro da bala
if Mouseclick()=1 and BulletLife=0
Position object 2,X#,Y#+43,Z#
Set object to camera orientation 2
BulletLife=25
show object 2
Loop sound 2
Endif
No
código onde nós checamos se o botão do mouse foi pressionado nós
adicionamos o comando "Loop sound" para iniciar a execução
do som. Este com será executado até que ele seja parado pelo código
que controla o tempo de vida da bala.
If BulletLife > 0
Dec BulletLife
Move object 2,20
bX#=Object position X(2)
bY#=Object position Y(2)
bZ#=Object position Z(2)
Position sound 2,bX#,bY#,bZ#
if BulletLife = 0
Hide object 2
stop sound 2
Endif
Endif
No
código de tiro da bala, nós adicionamos dois comandos para
manipular a posição e o fim do nosso som. O comando "Position
Sound" é usado para colocar o nosso som na coordenada 3D. O
primeiro parâmetro deste comando é o número do som que nós
queremos posicionar. Os 3 parâmetros restantes designam onde nós
queremos posicionar o som. Nós pegamos as posições X, Y e Z da
bala e as armazenamos nas variáveis "'bX#",
"bY#" e "bZ#". Estes são os valores que usamos
para posicionar o som da bala. Quando o valor da variável
"BulletLife" alcançar o valor 0, nós usamos o comando
"Stop Sound" para parar a execução do som da bala.