Proposta:
Explicar como atirar uma bala na perspectiva de primeira pessoa
Este
tutorial explica como criar uma arma e atirar uma bala na
perspectiva de primeira pessoa. Como acontece com os tutoriais
anteriores, nós estamos adicionando o código anterior e
implementando-o com as novas técnicas. Neste tutorial nós só
iremos discutir as novas mudanças do código que é a implementação
da arma e das balas.
Rem Cria o tambor da arma
Make object cylinder 1,2
XRotate Object 1,90
Fix object pivot 1
Scale object 1,100,100,500
position object 1,0,-7,15
Lock object on 1
Esta
seção de código, colocado antes do loop principal, cria um objeto
cilindro e o rotaciona. Ele está perpendicular a visão padrão da
câmera. Nós usamos o comando "Fix Object Pivot" para
fazer com que esta seja a orientação padrão do objeto. Isto significa
que o objeto, em sua rotação atual, tem todos os seus ângulos de
rotação configurados como 0 sem modificar a orientação do
objeto. Este comando é usado normalmente quando carregamos modelos
que estão fora da orientação. Se você carregar um modelo de um
character e ele estiver com sua face em sua orientação padrão,
então você pode rotacionar o modelo character pois ele manterá
desta forma. Você corrige o eixo do objeto para fazer com que a
posição atual seja a orientação padrão. Após alinhar o objeto
com a câmera, nós usamos o comando "Scale Object" para
escalar o objeto na direção Z. Isto cria um longo objeto que será
a nossa arma. O primeiro parâmetro neste comando é o objeto que nós
queremos escalar. Os últimos três parâmetros no comando são as
direções X, Y e Z que nós queremos escalar o objeto. Nós
configuramos a escala X e Y para 100. Este valor não está em
unidades; ele representa um valor em porcentagem desta direções. Nós
configuramos a escala Z para 500, escalando a porcentagem do objeto
em 500 ou 5 vezes seu comprimento original. Por próximo nós posicionamos
o objeto. Por padrão, nossa câmera está configurada na posição
(0,0,0) com uma rotação de (0,0,0). Nós posicionamos o cilindro
a: -7 unidades abaixo da câmera e 15 unidades para frente da câmera.
Ele cria a semelhança do tambor da arma.
Rem Cria bala
Make Object Sphere 2,2
Hide Object 2
Este
código cria uma pequena esfera no formato de um projétil de bala
como objeto. Nós usamos o comando "Hide Object" para
ocultar o objeto. A razão pela qual estamos fazendo isto aqui é
que nós não queremos que o projétil seja visto até que ele seja
disparado.
if Mouseclick()=1 and BulletLife=0
Position object 2,X#,Y#+43,Z#
Set object to camera orientation 2
BulletLife =25
Show object 2
Endif
Esta
parte do código refere-se ao ponto em que recebemos a entrada a
partir do botão do mouse. Ao clicar com o mouse, a bala é
disparada da nossa arma. Nós usamos o comando
"MouseClick()" para determinar se a bala foi ou não
disparada. Este comando irá retornar um número quando um dos botões
do mouse for pressionado: 1 para o botão esquerdo, 2 para o botão
direito e 0 para nenhum botão. A instrução de comparação
"if" também checa se a bala já está sendo disparada (ao
checar se a variável "BulletLife" é igual a 0). Se estes
dois testes forem verdadeiros, então o objeto bala é posicionado a
sete unidades abaixo da câmera. Posteriormente, o objeto bala é
orientado para a câmera usar o comando "Set Object To Camera
Orientation". Este comando possui um parâmetro: o número do
objeto que nós queremos alinhar com a câmera. A partir do momento
que a bala é nova, nós configuramos a variável
"BulletLife" igual a 25. Nós permitimos nosso programa a
considerar o nosso objeto bala para ser renderizado, usando o
comando "Show Object".
If BulletLife > 0
Dec BulletLife
Move object 2,20
If BulletLife = 0 then Hide object 2
Endif
Esta
parte do código é onde a bala é movida. Se a variável
"BulletLife" for maior que 0 nós usamos o comando
"Dec" para decrementar a variável "BulletLife".
Este comando decrementa nossa variável em 1. Nós movemos o objeto
na direção que ele está com a face voltada em 20 unidades.
Depois, nós checamos a variável "BulletLife" para ver se
ele é igual a 0. Se ela for igual a 0, nossa bala estará fora do
seu tempo de vida e nós ocultamos o projétil novamente.
Agora
você já está apto a adicionar tiros em seu jogo.