terça-feira, 20 de maio de 2008

Colisão - meu ultimo artigo escrito para o imasters.com

Olá pessoal! Mais uma vez estamos aqui para desenvolver algo simples, mas muito legal e de grande utilidade. Vamos observar como funciona o sistema de colisão de movie clips “hitTest()”, muito utilizado para fazer joguinhos.
Primeiro passo:
Vamos criar quatro barras e uma bola. Em seguida, vamos transformá-las em 5 movie clips com os seguintes nomes:
Teto, piso, direita, esquerda e bola, conforme a figura abaixo.




Segundo Passo:
Vamos instanciar cada movie clip com seu próprio nome. Bola ficará com o bola. Teto vai ficar com teto e assim por diante, conforme a figura abaixo.

Terceiro Passo:
Vamos direto ao código. Lembrando que o objetivo deste artigo é mostrar a função hitTest() que nos mostra quando um símbolo colide com outro. Bem, vamos lá. Abaixo segue o código comentado.

//declaração das variaveisdirecao = 1; // esta variável indica se a bola vai para direita ou para a esquerda altura = 0; // esta variável indica se a bola vai para cima ou para baixo

_root.onEnterFrame = function() { if(direcao == 0) // se direcao = 0, a bola se movimenta para a direita {bola._x+=5; }if(direcao == 1) // se direcao = 1, a bola se movimenta para a esqueda {bola._x-=5; }if(altura == 0) // se altura = 0, a bola se movimenta para a baixo {bola._y-=5; }if(altura == 1) // se altura = 1, a bola se movimenta para a cima {bola._y+=5; }/*aqui determinamos a colisão com a função hitTest(), quando a bola encostar em qualquer uma das barras ela muda de direção, mudando o valor das variavei direcao e altura.*/if (bola.hitTest(direita)){direcao = 1;}if (bola.hitTest(esquerda)) {direcao = 0;} if (bola.hitTest(teto)) {altura = 1;}if (bola.hitTest(piso)) {altura = 0;}};


Bem, aqui termina nosso código lembrando que este código deve ser inserido no primeiro frame, como podemos ver na figura abaixo:


Obs.: o código está sem os comentários e identação para ganhar espaço, mas funciona da mesma forma.
Aqui terminamos nosso artigo. É só rodar e ver o resultado. Fica bem legal e a partir daí podemos criar várias outras aplicações para a função hitTest().
Espero que tenham gostado. Um abraço e até a próxima.

Nenhum comentário: