Collision

Classe para cuidar das colisões entre dois objetos. Ela é implementada nos GameObject e também pode ser usada diretamente como mostrado abaixo.


Funções da Classe

Collision.collided(game_object1, game_object2)
Retorna um boolean indicando se dois GameObject colidiram.

Collision.collided_perfect(gameimage1, gameimage2):
Retorna um boolean indicando se pontos não transparentes de dois GameImage colidiram.

Diferenças entre collided e collided_perfect

Apesar das duas funções verificarem colisões, existe uma diferença crucial entre as duas. A função collided verifica se houve colisão entre qualquer ponto de duas imagens, ignorando transparências. Como, essencialmente toda as imagens são retangulares, muitas vezes o resultado do uso dessa função não é exatamente o esperado:

Por mais que a pedra não esteja realmente colidindo com a cobra, os limites das duas imagens estão se sobrepondo. Logo, collided retorna true. Porém, no caso de collided_perfect, a função retornaria false, pois ela verifica ponto a ponto, analisando o canal de transparência da imagem (canal alpha). Para uma colisão ser considerada por esse método, a pedra tem que efetivamente tocar a cobra, como no exemplo abaixo:

Verifique em cada caso qual função é mais indicada. Experimente utilizar em seu jogo uma de cada vez e verifique qual resultado é mais interessante para você.