sexta-feira, 21 de maio de 2010

008 - Space Invaders (3) - Tiro

Aqui faremos a nave atirar (apenas atirar, não desenvolver o poder destrutivo).

A criação de um tiro é, na realidade, um processo chamado no Unity de Instantiate (instanciar). O jogo criará outro game object pre-determinado pelo programador. No nosso caso, o tiro.

Toda nave possui um canhão, certo?

Vá em "GameObject >> Create Other>> Cube" e crie outro cubo.

Nome: "Canhao" (sem til, mesmo).
Scale: x = 1; y = 0,2; z = 1

Esse não será o canhão que o jogador irá ver na tela. Ele será, na verdade, a "fonte geradora" dos disparos da nave.

Vamos, lá. arraste "Canhao" para dentro de "Nave". Você terá algo mais ou menos assim... (clique na imagem para visualização completa)



Para que o canhão fique invisível, vá ma tela "Inspector >> Mesh Renderer >> Materials >> Default - Diffuse"

Mude para "Shadow Material >> Transparent >> Cutout >> Bumped Diffuse"

Alfha Cutout = 0 (todo p/ direita).

Agora vamos criar o tiro própriamente dito (o objeto a ser instanciado).

Para dominar a técnica de instanciar objetos, faremos isso com cubos.

Novamente, "GameObject >> Create Other >> Cube"

Nome: "Tiro"

Scale x = 20; y = 2; z = 100

Mude a textura para "Fire Add" (da mesma maneira que deixamos o canhão transparente)

Shader: "particles >> additive"

Agora o script de tiro. "Project >> Create >> JavaScript"


Nome: "Atirar - mover tiro"


Escreva o script abaixo:


var velocidade = 10;

function Update () {
    transform.Translate(0, 0, velocidade);
    Destroy (gameObject, 5);
}


Este script irá:
  • transform.Translate(0, 0, velocidade); //Mover o objeto criado;
  • Destroy (gameObject, 5); //Destruir o objeto após 5 segundos. Se ele não for destrído, vai dar problema.

Para que a instancia funcione, o objeto precisa ser especial, mais precisamente um Prefab. Para criar um, vá na tela "Project >> Create >> Prefab"

O ícone desse prefab esta cinza, certo? Renomeie para "Tiro".

Pegue o "Tiro" da tela "Hierarchy" e mova - o para dentro do prefab "Tiro".

Agora o ícone esta azul. Que lindo!!!

Agora o script para que o jogador possa atirar. Ele será adicionado ao canhão de "Hierarchy".

Faça o mesmo processo, só que daremos o nome de "Atirar - criar tiro" e colocaremos o script abaixo:

var newObject : Transform;
private var x = 1;

function Update () {
    if
(Input.GetButtonDown("Fire1")) {
        Instantiate(newObject, transform.position, transform.rotation);
    }
}

Agora, sempre que ctrl (default para tiro) for pressionada, a prefab "Tiro" aparecerá no jogo. Automaticamente ela irá se mover por causa do primeiro script já criado.

Adicione este script ao "Canhao".

Em "Inspector >> Atirar - criar tiro(script)" coloque New Object = Assets: Tiro

Ctrl+S para salvar. Ctrl+P para testar. Veja que apertando ctlr sairá um tiro e, depois de 5 segundos, ele desaparecerá da tela (a câmera, depedendo da velocidade do tiro, poderá não ver o tiro sumir).

Nenhum comentário:

Postar um comentário