Passos para criar uma detecção
de colisões:
Os passos seguintes vão ajudar-nos a criar uma detecção
de colisões em Flash:
1. Verificar a posição
Primeiro, é necessário detectar as coordenadas x e y das duas
formas circulares (circle1 e circle2); os pontos centrais.
O código para esta verificação é:
xpos1 = getProperty ("/circle1",_x)
ypos1 = getProperty ("/circle1",_y)
xpos2 = getProperty ("/circle2",_x)
ypos2 = getProperty ("/circle2",_y)
2. Obter o raio
Depois de obtermos a posição, é necessário
obter também o raio das duas formas. Como tal, é necessária
a largura de ambas as formas. Use o seguinte código para obter
o raio.
rad1 = getProperty ("/circle1"),_width) /2
rad2 = getProperty ("/circle2"),_width) /2
3. Teorema de Pitágoras
Agora já temos as variáveis para usar no teorema de Pitágoras
r2 = x2 + y2. Para determinar o comprimento
do lado y, subtrai-se a ypos1 da ypos2 (ypos1 - ypos2).
Para o comprimento do lado x: xpos1 - xpos2. Chamamos às
variáveis formy e formx respectivamente.
Depois, usamos o teorema de Pitágoras para calcular o comprimento do lado
mais longo, a hipotenusa(?):
(formx * formx + formy * formy) = ?
A seguinte porção de código é a base para a detecção de colisões.
A soma dos quadrados dos dois lados (hipotenusa ao quadrado) é
menor ou igual que o quadrado da soma dos raios das duas formas (que no
fundo, é como se fosse o quadrado de um dos lados), mais o quadrado
da soma dos raios das duas formas (que no fundo, é como se fosse
o quadrado do lado restante. Esta "grande" soma, é como
se fosse uma segunda hipotenusa ao quadrado.). Básicamente, quando
a distância entre as duas formas (ao quadrado) for igual ou menor
que a soma dos dois raios (ao quadrado), dá-se a colisão.
o código é este:
If ((formx*formx + formy*formy) <= ((rad1 + rad2)*(rad1 + rad2)) + ((rad1 + rad2)*(rad1 + rad2)))
"/:collission" = "Sim"
Else
"/:collission" = "Não"
End If
4. Já está!
Este não é o código exacto, apenas uma explicação da lógica usada na detecção
de colisões. Depois da leitura deste tutorial, de certeza que a criação
de detecções de colisões no Flash será muito mais fácil. Faz o download
do .FLA para analizares o código mais detalhadamente. |