Proposta:
Explicar como criar um simples efeito de explosão
Neste
tutorial nós iremos mostrar como criar um simples efeito de explosão
quando as balas encontram seu alvo ou quando elas abandonam a arma.
rem Cria efeito de explosão
Make Object Sphere 30,20
texture object 30,2
ghost object on 30
Hide Object 30
Make Object Sphere 31,20
texture object 31,2
ghost object on 31
Hide Object 31
Load 3Dsound "Explode.wav",3
Estas
linhas de código são colocadas no início do programa quando nós
iniciamos nossos objetos, sons e imagens. Nós estamos criando os
objetos que nós iremos usar para o efeito de explosão. Note que nós
estamos reutilizando a textura que nós usamos para o fogo em nosso
efeito de partícula. Nós também carregamos um arquivo de som que
nós iremos usar como nosso som de explosão.
if Mouseclick()=1 and Explode =0
if BulletLife<50
Position object 2,X#,Y#-7,Z#
Set object to camera orientation 2
BulletLife =120
show object 2
Loop sound 2
Endif
Endif
Aqui
nós introduzimos a variável "Explode" em nosso programa.
Nós estamos checando se uma explosão está em efeito. Se existir
uma ocorrência de explosão nós não queremos que o jogador possa
atirar novamente e cortar o efeito da explosão, diminuindo o
impacto do efeito. Nós também configuramos um limite de quando a
bala poder ser atirada novamente, testando se a vida da bala é
menor que 50. Isto é feito para assegurar que a bala está distante
o bastante de onde ocorre o efeito de explosão, caso contrário o
efeito não seria notado pelo jogador.
if bY# < Get Ground height(1,bX#,bZ#) then BulletLife=0
A
linha de código anterior está localizada na sub-rotina
"ShootBullet". Ela checa se a bala obteve contato com algo
e configura a variável "BulletLife" igual a zero caso ela
tiver contato
if BulletLife = 0
Hide object 2
stop sound 2
for x=10 to 20
hide object x
next x
Explode = 20
endif
Este
segmento de código também está na sub-rotina
"ShootBullet". Ela está após o tempo de vida ser
configurado para zero ou quando a bala colide com algo. Todos os
efeitos de partículas estão ocultos assim como os objetos (no caso
a bala). A variável explode está configurada com um valor igual a
20, para iniciar o contador de explosão.
If Explode > 0 then Gosub ExplodeRocket
Esta
linha de código está em nosso loop principal. Se o contador de
explosão for maior que zero, a sub-rotina "ExplodeRocket"
é chamada para executar o código de explosão.
Rem Explosão da bala
ExplodeRocket:
Position object 30,bX#,bY#,bZ#
Show object 30
Position object 31,bX#,bY#,bZ#
Show object 31
EScale=20*(30-Explode)
Scale object 30,EScale,EScale,EScale
Yrotate object 30,WrapValue(Explode*37)
Scale object 31,EScale/1.5,EScale/1.5,EScale/1.5
Yrotate object 31,WrapValue(359-Explode*37)
Dec Explode
If Explode = 0 then hide object 30: Hide object 31
If Explode=18
position sound 3,bX#,bY#,bZ#
play sound 3
endif
If Explode < 15 then position sound 3,X#,Y#,Z#
Return
A sub-rotina
"ExplodeRocket" está onde tudo trabalha para que haja a
explosão. Onde a bala parar, nós então posicionamos as duas
esferas que nós preparamos para criar o nosso efeito de explosão.
Nós calculamos o nosso fator de escala de explosão e o armazenamos
na variável "EScale". Depois, nós escalamos nossa
primeira esfera e a rotacionarmos em uma velocidade que irá
diminuir conforme a esfera aumenta. Nós fazemos o mesmo com a outra
esfera, exceto pelo fato que nós escalamos esta outra em uma escala
menor do que com que ocorre com nossa primeira esfera e a rotacionarmos
em uma escala maior, baseado no valor "Explode". Agora nós
usamos o comando "Dec" para decrementar o valor de explosão
em uma unidade. Nós checamos se nossa variável "Explode"
alcançou o valor zero. Se a resposta for sim, nós ocultamos nossas
duas esferas de explosão. Note, nós usamos dois ponto (:) para
executar dois comandos "Hide Object" em uma linha. Nós
poderíamos ter usado a comparação "If EndIf" mas, ao
usar os dois pontos (:) nós tornamos nosso código menor e mais fácil
de ser lido. As próximas linhas do código imitam o efeito de som,
onde você ver algo acontecer ao longe, antes mesmo de poder
escutar. O código espera que o contador alcance o valor 18 antes de
eles executar o som. Ele também inicia o som executando-o na posição
da bala. Quando o contador alcança o valor 15 o som é movido para
a posição da câmera criando o efeito de explosão a distância.
Utilizando o "Play Sound" ao invés de usar o comando
"Loop Sound" o som é executado somente uma vez e então
é finalizado.