quinta-feira, 2 de junho de 2011

Visual Basic Tip: Detectando colisões entre dois objetos

Olá. Neste artigo vou disponibilizar uma função interessante: a função para detectar colisões entre dois objetos retangulares. Ele funciona com shapes, pictureboxes, images e até mesmo com coordenadas virtuais (variáveis).

Tal função é:


Irei explicar todos os atributos com um exemplo: imagine dois pictureboxes Pict1 e Pict2. Onde quer que eles estejam, a função vai determinar se um está sobre/sob o outro, mesmo que por um mísero ponto dos dois. Em outras palavras, ele vai determinar se existe uma intersecção entre os dois objetos. Sendo assim, o código para estas duas pictureboxes do exemplo seria:

dim Colisao as boolean
Colisao = DetectCollision(Pict1.left, Pict1.top, pict1.width, pict1.height, pict2.left, pict2.top, pict2.width, pict2.height)

Como pode-se ver, há a necessidade de se passar não só a posição dos dois mas também o tamanho de ambos. Lembrando que os quatro primeiros atributos são do primeiro objeto e os outros quatro, do segundo. Nesta ordem: posição horizontal do primeiro objeto, posição vertical do primeiro objeto, largura do primeiro objeto, altura do primeiro objeto, posição horizontal do segundo objeto, posição vertical do segundo objeto, largura do segundo objeto e altura do segundo objeto.

É isso pessoal.
Em breve estarei divulgando a nova versão do MultiSystem. Atualmente estou desenvolvendo os jogos. Ele vai ter jogo de Tetris (já desenvolvido e funcionando legal, com música e tudo), Pac-man (em desenvolvimento) e outros que vier em mente.
Fiquem atentos!

2 comentários:

Anônimo disse...

Meu amigo, sensacional seu código! Valeu

Unknown disse...

Parabéns pelo código !!!

Postar um comentário