Vamos supor que estou usando esse personagem.
(fonte: iconbug.com )
Como você implementaria a detecção de colisão para isso? Usar uma caixa delimitadora não parece ser uma boa aproximação, porque a forma do pássaro não está nem perto de um quadrado.
Eu estava pensando em ter uma espécie de estrutura de dados em quatro árvores dentro do objeto que representa partes da imagem. Cada folha pode ser false
(caso cubra o espaço branco / transparente fora do pássaro) ou true
(caso represente uma área do pássaro, isto é, bico, olho etc.). Então teste de alguma maneira o único obstáculo na cena para colisão com o pássaro.
Mas meus problemas na minha abordagem são:
- Não sei como inicializar o quad tree.
- Depois que a árvore quádrupla é inicializada, não sei como atravessá-la e usá-la quando o obstáculo estiver dentro das coordenadas da imagem.
Como você faria a detecção de colisões com caracteres não quadrados?
LE: A outra abordagem que vi foi usar várias caixas delimitadoras. Por exemplo, eu teria uma ou algumas caixas delimitadoras para o bico, depois algumas para o cabelo ou a cauda. Mas pode ser entediante. Se essa é uma abordagem válida no meu caso, como eu geraria essas caixas delimitadoras? Duvido que eu tenha que codificá-las no meu programa.
LE2: Eu me preocupo com colisões bastante precisas. Não consigo imaginar como uma única caixa ou círculo delimitador possa pelo menos se aproximar decentemente dessa forma, para que essa abordagem não funcione.