Supposons que j'utilise ce personnage.
(source: iconbug.com )
Comment implémenteriez-vous la détection de collision? L'utilisation d'une boîte englobante ne semble pas être une bonne approximation, car la forme de l'oiseau n'est nulle part près d'un carré.
Je pensais avoir une sorte de structure de données en quadruple arbre à l'intérieur de l'objet qui représente des parties de l'image. Chaque feuille peut être soit false
(dans le cas où elle couvre l'espace blanc / transparent à l'extérieur de l'oiseau) ou true
(dans le cas où elle représente une zone de l'oiseau, c'est-à-dire le bec, l'œil, etc.). Ensuite, testez en quelque sorte le seul obstacle de la scène pour une collision avec l'oiseau.
Mais mes problèmes dans mon approche sont:
- Je ne sais pas comment initialiser l'arbre quad.
- Une fois que l'arbre quad est initialisé, je ne sais pas comment le traverser et l'utiliser une fois que l'obstacle est dans les coordonnées de l'image.
Comment feriez-vous la détection de collision avec des caractères non carrés?
LE: L'autre approche que j'ai vue était d'utiliser plusieurs boîtes englobantes. Par exemple, j'aurais une ou quelques boîtes de délimitation pour le bec, puis quelques-unes pour les cheveux ou la queue. Mais cela peut devenir fastidieux. S'il s'agit d'une approche valide dans mon cas, comment générer ces boîtes englobantes? Je doute que je devrais les faire coder en dur dans mon programme.
LE2: Je me soucie des collisions assez précises. Je ne peux pas imaginer comment un seul cadre ou cercle englobant peut au moins approximativement décemment cette forme, donc cette approche ne fonctionnera pas.