Projeto SEMÁFORO
Uma colisão ocorre quando dois objetos se encontram em algum ponto do plano cartesiano.
Existem três abordagens, com as suas vantagens e desvantagens, para a solução deste problema, que parecendo simples... rapidamente se torna bastante dificil.
1. Detecção de colisões por intersecção de rectângulos
Uma imagem ocupa sempre um espaço retangular, independentemente das suas áreas transparentes. Esta abordagem simplesmente verifica se os retângulos das duas sprites se encontram, não contando a sua área transparente. Isto leva a que colisões sejam detectadas mesmo quando apenas áreas transparentes das sprites intervenientes estejam colidindo.
É a abordagem mais fácil e rápida das três, e também a mais ineficaz.
2. Detecção de colisões por comparação de pixels
Basicamente aplica-se a primeira abordagem para detecção de possíveis colisões. Quando é detectada uma possível colisão verifica-se através de comparação pixel a pixel da informação das imagens na área intersectada. Se houver algum pixel em que ambas as imagens tenham informação não transparente é porque a colisão é real, e deve por isso ser tratada.
É a abordagem mais eficaz, no sentido que detecta colisões apenas quando elas realmente acontecem, mas também a mais lenta, visto que necessita de muito tempo e processamento.
3. Detecção de colisões por retângulo encolhido
Esta abordagem é bastante semelhante à primeira em implementação, mas tem resultados visuais muito superior. Em vez de criarmos um retângulo com as mesmas dimensões que a sprite, criamos apenas um à volta da área colidível. Isto faz com que em termos de velocidade seja praticamente igual à primeira abordagem, e em termos visuais não muito inferior à segunda.
Esta abordagem é um intermédio entre as duas já mencionadas. É mais rápida que a segunda abordagem, mas menos precisa, e mais lenta que a primeira abordagem, mas mais precisa.
Como colocar imagens
Carregando arquivos de