travaille sur ce problème de la détection de collision et il semble y avoir 3 approches que je pourrais prendre:Quelle est la meilleure approche pour la détection de collision 2D sur l'iPhone?
approche Sprite et le masque. (Et le chevauchement des sprites et vérifiez un nombre différent de zéro dans les données de pixel sprite résultant).
Cercles de délimitation, rectangles ou polygones. (Créez une ou plusieurs formes qui entourent les sprites et effectuez les calculs de base pour vérifier les chevauchements).
Utilisez une bibliothèque d'images-objets existante.
La première approche, même si elle aurait été la façon dont je l'aurais fait dans les vieux jours de 16x16 blocs d'images-objets, il semble qu'il n'y est tout simplement pas un moyen facile d'obtenir à l'image individuelle données de pixel et/ou canal alpha dans Quartz (ou OPENGL d'ailleurs). Détecter le chevauchement de la boîte englobante est facile, mais ensuite créer une troisième image à partir du chevauchement et ensuite le tester pour les pixels est compliqué et mon intuition est que même si nous pouvions le faire fonctionner serait lent. Est-ce que je manque quelque chose de propre ici?
La deuxième approche consiste à diviser nos sprites en plusieurs polygones et à les tester pour les chevauchements. Plus il y a de polygones, plus la détection de collision est précise. L'avantage est que c'est rapide, et peut être précis. L'inconvénient est que cela rend la création de sprite plus compliquée. c'est-à-dire que nous devons créer les polygones pour chaque sprite. Pour la vitesse, la meilleure approche consiste à créer un arbre de polygones.
La troisième approche dont je ne suis pas sûr car elle implique l'achat de code (ou l'utilisation d'une licence open source). Je ne suis pas sûr de savoir quelle est la meilleure bibliothèque à utiliser ou si cela pourrait vous rendre la vie plus facile ou nous donner un problème pour l'intégrer dans notre application. Donc, en bref, je privilégie l'approche polygone et arborescence et je vous serais reconnaissant d'avoir des vues à ce sujet avant d'écrire beaucoup de code.
Meilleures salutations
Dave
À moins que vos jeux comportent un ballon essayant de naviguer à travers une forêt de cactus, les collisions parfaites de pixel est presque JAMAIS l'approche correcte. Les gens ne veulent pas mourir car 1 pixel de leur nez a recoupé un pixel du pied d'un ninja. – Toad
Utiliser (une collection de) boîtes/cercles de délimitation est rapide et généralement le chemin à parcourir. Essayez de ne pas changer les boîtes/cercles pour chaque image d'animation de l'image-objet. Cela donnera des effets étranges (par exemple, vous vous dirigez vers un mur, tournez, et tout à coup votre pied est coincé dans le mur) – Toad
Comment avez-vous entendu parler de notre jeu de ballons de cactus: o). Des conseils utiles cependant, vous êtes aussi pour les polygones ou les bibliothèques? P.s. Si vous voulez ajouter vos commentaires en guise de réponse, je peux voter/l'accepter. –