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