![]() |
|
![]() ![]() ![]() |
|
3.10 Tiro ao Alvo
Proposta: mostrar como criar um jogo com um monstro para servir de alvo Neste tutorial nós iremos criar uma mira e também um método para a mira e determinar onde o jogador está. rem Cria bala do monstro Make Object Sphere 102,2 texture object 102,2 Hide Object 102 Este código é adicionado antes do laço principal. Ele cria uma esfera para servir como projétil do monstro. Note que nós estamos usando a textura 2 como textura do objeto. Esta é a mesma textura que nós usamos para o projétil e efeitos. Reusar textura economiza uma grande quantidade de memória que nosso programa usa. rem Cria explosão do monstro Make Object Sphere 130,20 texture object 130,2 ghost object on 130 Hide Object 130 Make Object Sphere 131,20 texture object 131,2 ghost object on 131 Hide Object 131 Este código também é adicionado antes do laço principal. Ele cria os objetos de explosão para o projétil dos monstros. rem Carregar partículas do monstro Load Image "fire.bmp",2 For x =100 to 110 Make object plain x+10,5,5 Texture object x+10,2 Set object x+10,1,0,0 Ghost object on x+10 Hide object x+10 Next x MPn=110 Você já deve conhecer este bloco de código a partir do efeito de partícula. O código é o mesmo, somente os números dos objetos foram modificados. Nós iniciamos o contador de partículas do monstro, "MPn" como 110, o número da primeiro objeto na série de partículas. Load 3Dsound "fireball2.wav",102 Load 3Dsound "Explode.wav",103 Este código foi adicionado para carregar os efeitos de som para o projétil do monstro. Note, nós não reutilizamos os sons para os efeitos do jogador. Nós criamos novos sons pois os sons do jogador e os sons dos monstros devem ser executados ao mesmo tempo.
Este código está em nosso laço principal. Aqui nós checamos pelo tempo de vida da bala do monstro e executamos a respectiva sub-rotina como as usadas pelo jogador. A adição é a sub-rotina "MonsterAI". Nós não queremos que o monstro atire uma nova bala enquanto há alguma sendo explodida ainda. Nós usamos a comparação "If Then Else" para ter certeza que isto não ocorre.
Esta é a sub-rotina "MonsterAI". Quando esta sub-rotina é chamada, o objeto do monstro é apontado diretamente aos jogadores. A distância entre o monstro e o jogador é calculada. Se a distância for menor que 1500 então o código continua. Se o jogador está fora de alcance nada acontece e a sub-rotina retorna para o laço principal. Se o jogador está no alcance, o código checa se a bala ainda está "viva" ou se a bala errou o jogador. A maneira de checar se a bala acertou ou não o jogador é através do uso deste pedaço de código "500-PDist/10". A bala do monstro anda a 12 unidades no espaço a cada vez que ela se move. Ela tem uma vida de 500, e por isto a bala pode viajar uma distância de 6000 unidades. Se nós dividirmos a distância ou o valor da variável "PDist" por 12 nós obtemos o número de unidades de vida que a bala dos monstros viajou em direção ao jogador. Se a distância fosse 1200 as unidades de vida do monstro seriam 100. Se nós subtrairmos este valor do valor total de unidades de vida nós obtemos 400. Se este número for maior do que o valor da variável "MonsterBulletLife" então nós sabemos a bala errou seu alvo. Ao invés de 10 nós usamos o 12 para dividir a distância, isto permite que a bala viaje um pouco mais do que antes. Ele adiciona mais o efeito da bala errando o jogador. Se o valor de "MonsterBulletLife" passar, o teste para uma outra bala ser atirada é acionado e nós apontamos o monstro diretamente à posição do jogador. Nós posicionamos e orientamos o objeto bala para o monstro. Nós configuramos o tempo de vida da bala para 500, mostramos o projétil e iniciamos o som da bala.
A sub-rotina "MonsterShootBullet" é muito semelhante a sub-rotina "ShootBullet", mas nós adicionamos algumas linhas para fazer com que o tiro do monstro seja guiado. Isto cria um desafio ainda maior ao jogador. Rem tiro guiado if Pdist <500 and Pdist>250 then Point object 102,X#,Y#,Z# if Pdist < 100 then point object 102,X#,Y#,Z# Este é o código para o tiro guiado. Se a bala estiver num alcance entre 500 e 250 unidades do jogador, a bala é apontada ao jogador. Se a bala está no alcance de 100 unidades, novamente ela aponta para o jogador. Isto dá um pequeno tempo para o jogador poder esquivar-se.
Esta é a sub-rotina "MonsterExplodeRocket". Você deve conhecer o código pois ele é o mesmo usado na sub-rotina "ExplodeRocket". As únicas diferenças entre elas estão nas variáveis de posição da bala do monstro e no número de objetos e sons. |
|
Esta é a barra de navegação para explorar todos os tutoriais da série "A Caça Aos Monstros" |
| 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 2.1 | 2.2 | 2.3 | 2.4 | 2.5 | 3.1 | 3.2 | 3.3 | 3.4 | 3.5 | 3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12 | 3.13 | 3.14 |
| Copyright © 2003 Dark Basic Software Limited. | ||
| Virtual Object Informática Ltda.® |
![]() |
![]() |