quinta-feira, 12 de agosto de 2010

022 - Space invaders (7) - Artilharia pesada

Na última postagem, vimos como aplicar os scripts de movimentação dos aliens nos modelos. Vimos também a necessidade de dois componentes que permitam a interação do alien com o ambiente: rigidbody e box collider. Estes dois componentes serão bastante úteis quando analizarmos colisões entre tiro e GameObject.

Anteriormente vimos como fazer a nave do protagonista atirar. Agora faremos os aliens atirarem.

1) A primeira coisa que precisamos é de um canhão para a nave. A construção de um canhão já foi explicada no post 008
Dê o nome deste canhão de "Canhao_alien".

2) Uma vez criado o canhão, é necessário um script que permita a sua ativação de forma automática, ou seja, quando o alien irá atirar, a frequência do tiro e a velocidade.
Crie um novo script. Dê o nome de "Atirar_alien". Copie o texto abaixo:

var newObject : Transform;
var tstart = 0.0;
var freq = 0.0;
InvokeRepeating ("LaunchProjectile", tstart, freq);

function LaunchProjectile () {
    Instantiate (newObject, transform.position + Vector3.forward * -55, transform.rotation);
}

3) Aplique este script à "Canhao_alien"

4) Jogue o "Canhao_alien" dentro do prefab do alien. Procure posiciona - lo no lugar mais conveniente conforme o seu modelo de alien.
Lembre - se: qualquer alteração no prefab fará com que você o perca, isto é, tire do objeto o rótulo de prefab. Depois de colocar o canhão, clique em Apply para salvar as alterações nele.

5) No nosso script "Atirar_alien" existem 3 valores que precisam ser determinados:
  • New Object: determina o objeto que será instanciado [no nosso caso, a prefab "Tiro"]
  • Tstart: determina quando o alien começará a atirar
  • Tfreq: determina a frequência de tiro. Quanto menor esse valor, mais tiros por frame serão gerados


Assim como os scripts para mover o alien, também é preciso determinar valores diferentes para cada canhão de cada alien. A frequência de tiro pode ser a mesma, ou pode ser variável para dar a noção de incerteza de quando será o próximo ataque.

6) O tiro que sairá do canhão alien deve ser diferente daquele que sai do canhão da nave do protagonista. Isso porque este último possui trajetória voltado para o norte [para a parte alta da tela]. Se esse tiro for colocado como objeto a ser instanciado pelo canhão alien, o que vai ocorrer? Ao invés de o tiro ir para baixo [na direção da linha de movimentação da nave do protagonista], ele vai para cima e não atingirá ninguem, ou seja, o tiro literalmente vai sair pela culatra. :p
Para isso, teremos de criar outro prefab que irá representar o tiro do alienígena. Usa - se então o mesmo processo descrito no post 008.
Esse tiro deverá ter os mesmos scripts do tiro do protagonista: "Atirar - mover tiro" e "ColisaoTrigger".

A seguir, teremos o sistema de tags. Um sistema bastante útil para, por exemplo, fazer o score de jogo ou determinar o seu fim.

Nenhum comentário:

Postar um comentário