Colisão de MovieClip

Coluna Flash – Colisão de MovieClip

Introdução

Atualmente vemos crescer o número de jogos desenvolvidos em Flash.
Alguns programadores que conheço estão ganhando algum dinheiro com isso, especializando-se em um mercado competitivo, que necessita grande criatividade e alguma boa dose de diferencial.
Um conhecimento necessário para desenvolver jogos é detectar se duas instâncias de clipe de filme se encontraram (“colidiram”) e a partir daí disparar comportamentos e ou
qualquer ação que desejar no filme.

Hoje irei mostrar um simples exemplo, onde ocorre a colisão entre duas instâncias de clipe de filme, utilizando o método hitTest.

Pré-requisitos

Macromedia Flash, cohecimento básico em ActionScript.

Objetivo

Mostrar ao leitor um exemplo simples de colisão entre dois clipes de filme e capacitá-lo
a utilizar o método hitTest.

Conceitos

Se o produto final de seu trabalho no Flash necessitar que existam colisões (muito comum em games), você poderá fazer uso do método hitTest integrante do objeto movieclip.
Esse método possibilita verificar quando duas instâncias de clipe de filme colidiram. E a partir dessa colisão, podemos manipular eventos em nosso filme.

Conteúdo

Vamos ao exemplo:

Crie um novo filme (Ctrl + N) e salve-o como colidir.fla

Crie uma camada, insira no lado esquerdo do palco um polígono, converta-o em clipe de filme (F8) e atribua o nome de instância “poligono_mc” (sem aspas).

1 – Nome de instância para o objeto.

Insira agora dentro da mesma camada, no lado direito do palco, um circulo, converta-o em Clipe de filme (F8) e atribua o nome de instância “circulo_mc” (sem aspas).

1 – Nome de instância para o objeto.

Crie uma nova camada e dê o nome de “actions”.
Selecione o primeiro quadro da camada actions, pressione F9 para abrir o painel de ações e digite o cód abaixo:

/*Primeiramente iremos criar uma action que fará com que o circulo acompanhe o mouse do usuário.*/

circulo_mc.startDrag(true); /*aqui definimos que a instância “circulo_mc” começará a ser arrastada e seu centro acompanhará o cursor do mouse (método StartDrag(true))*/

/*Vamos agora inserir uma action para criar um evento que se atualize constantemente, através do evento onEnterFrame e criaremos uma animação via actions para o polígono*/

poligono_mc.onEnterFrame=function(){ /*evento de atualização constante. */

this._x=this.x+10; /*animação via actions para o poligono onde a propriedade _x (posição no eixo x) dessa instância receberá (=) como valor a sua posição atual + 10 pixels. */

if(this.hitTest(circulo_mc)){

delete this.onEnterFrame; /* estamos perguntando se (if) a instância poligono_mc se chocou(hitTest)com a instância que está dentro dos parênteses, no caso “circulo_mc”, e determinando que quando colidir será removido (delete) o evento de atualização constante (onEnterFrame). */

}

}

Considerações Finais

Agora é só testar seu filme e movimentar o mouse para arrastar o círculo. Quando os dois colidirem
o poligono irá parar de se movimentar.

Vimos nesse artigo um simples exemplo do que podemos fazer com o método hitTest, use a imaginação
para que a partir disso possa fazer filmes interessantes e agregar ainda outros conhecimentos para começar a desenvolver games.

Forte abraço

Autor: Danilo Forte – Colunista do Portal MXSTUDIO

Qualquer dúvida envie um email para danilo_forte@mxstudio.com.br ou acesse o nosso fórum

Escrito por Daniloforte on janeiro 11, 2006. Arquivado em Flash. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

4 respostas a Colisão de MovieClip

  1. gostaria de saber como eu fasso para tirar ums duvida que acontescem frequente mente com as pessoa
    acho que ja acontesceu com varias pessoas
    espero que vc possa me ajudar toma meu msn
    joseantoniotkd2007@hotmail.com
    queria só tirar umas duvidas …
    flw

  2. Danilo sua publicação esta bem explicada e foi de grande ajuda, porem o seu ActionScript esta com uma pequena falha, vc esqueceu de colocar um ” _ ” na linha ” 5. ” depois do ” . ” :

    errado:
    5. this._x=this.x+10;
    certo:
    5. this._x=this._x+10;

    Fmz…
    Obrigado pela sua publicação, e por sua atenção

  3. Cara esgotaram-se minhas possibilidades de testes, não consigo usar esta função no flash CS5, pesquisei em td qt é lugar achei vários codigos. adaptei todos para o que preciso, mas nada.
    se puder fala aí como funciona ou me add msn. é o endereço do email. abraço

  4. Olá!
    Estou tentando usar a colisão de movieclip mas não estou conseguindo.
    Quero que quando o objeto mao colidir com o objeto painel a variavel habilitado = false.

    código:

    mao.startDrag(true);
    mao.onEnterFrame=function()
    {
    if(this.hitTest(painel)){
    var habilitado = false;

    }
    }

    E gostaria de saber como faço se ela parar de colidir a variavel habilitado = true;

    Obrigado!

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>