sexta-feira, 6 de agosto de 2010

020 - Space invaders (5): Hora de adestrar aliens

Desculpem a demora em postar aqui. Tive vários problemas com minha internet e ainda o jogo de Miúda. Hora de voltarmos ao nosso tutorial Space Invaders depois de mais de 2 meses parado.

O que faremos agora será mover os aliens. A princípio faremos vários scripts que farão eles se moverem de diferentes formas. Esses scripts terão alguns elementos em comum, como início do movimento, velocidade e autodestruição do alien (não é bom ele ficar muito tempo no cenário, mesmo que fora do alcance da câmera. Isso pesa muito a memória).

1) Vamos primeiro tentar fazer os aliens descerem contra a sua nave, partindo da direita para a esquerda.
Crie um novo script e nomeie "Move_alien_esquerda". Escreva o script abaixo


var x = 1.0;
var y = 25.0;
var velocidade = -5.0;
var tstart = 0.0;
var tfreq = 0.0;
InvokeRepeating ("MoveAlien", tstart, tfreq);

function MoveAlien () {
transform.Translate(x-(y*0.0125), 0, velocidade);
y++;
Destroy(gameObject, 10+tstart);
}


Nesse script, assim como em outros que virão a seguir, teremos as seguintes variáveis comuns:

  • velocidade: determina a velocidade com o qual o alien se projetará na direção do eixo Z (ou seja, de cima para baixo)
  • tstart: determina quando o alien começará a se mover
  • tfreq: determina a velocidade com o qual o alien se moverá no todo.
A nossa base para os outros scripts será a função MoveAlien. Só mudaremos algumas coisinhas nesse script de forma a gerar os outros efeitos.

2) Vamos mover os aliens da esquerda para a direita da mesma forma que o script 1. Crie outro script e nomeie "Move_alien_direita". Escreva o mesmo script acima.

Na linha 10, onde tem - se
y++;
Troque por
y--;

3) Vamos mover os aliens apenas no eixo horizontal, sem eles descerem contra a sua nave. Partindo da direita para a esquerda.
"Move_alien_esquerda_semdescer"

Aqui, o valor da variavel velocidade sempre será nulo.
Na linha 9, onde tem - se
transform.Translate(x-(y*0.0125), 0, velocidade);
Troque por
transform.Translate(x-(y*0.0125), 0, 0);


4) Agora mover os aliens da mesma forma que em 3, partindo da esquerda para a direita.
"Move_alien_direita_semdescer"




Na linha 9, onde tem - se
y++;
Troque por

y--;

5) Agora, vamos mover os aliens em linha reta, apenas descendo. Sem se mover para a esquerda ou direita.
"
Move_alien_desceReto"

var tstart = 0.0;
var tfreq = 0.0;
var velocidade = -5.0;
InvokeRepeating ("MoveAlien", tstart, tfreq);

function MoveAlien () {
transform.Translate(0, 0, velocidade);
Destroy(gameObject, 10+tstart);
}


6) E por fim, faremos os aliens descerem e pararem depois de um certo tempo.
"Move_alien_parar"

var x = 1.0;
var y = 0.0;
var parar = 100;
var tstart = 0.0;
var tfreq = 0.0;
InvokeRepeating ("MoveAlien", tstart, tfreq);

function MoveAlien () {
if (y < parar) {
transform.Translate(0, 0, 5);
y++;
}
else {
y += 0.1;
}
Destroy(gameObject, 30);
}

Com isso temos 6 scripts diferentes para mover os aliens de 6 diferentes formas:
  1. Move_alien_esquerda
  2. Move_alien_direita
  3. Move_alien_esquerda_semDescer
  4. Move_alien_direita_semDescer
  5. Move_alien_desceReto
  6. Move_alien_parar
Basta aplicar cada script aos modelos dos aliens que você desejar.
No cenário, clique no modelo do alien de sua preferência. Depois vá em "Component >> Scripts".

Escolha um dentre os 6 scripts que estão listados acima.
Você pode editar os valores das variáveis na própria tela do Unity, sem ter de alterar o script diretamente. Dessa forma, você pode setar valores individuais para cada alien.














Principalmente quanto a Tstart. É importante haver valores diferentes para essa variável. Na próxima, veremos como ajustar os valores dessa variável para diversos aliens no cenário.

Nenhum comentário:

Postar um comentário