Je travaille avec xna en C# et dans mon jeu, je vais avoir une variété de vaisseaux spatiaux volant partout. Ils auront chacun une rotation, une taille et une position arbitraires dans l'espace et j'ai besoin d'une méthode pour déterminer quand ils entrent en collision. Idéalement, la méthode prend deux Rectangles, deux doubles et deux Vector2 pour la taille, la rotation et la position respectivement et renvoie un booléen qui indique s'ils ont intersecté ou non.Détection de collision pour des rectangles de taille arbitraire, positionnés et pivotés dans XNA
Répondre
Jetez un oeil à ces liens:
Collision Detection Overview
Collision Detection Matrices
Putting Collision Detection Into Practice
Ils vous montrent une façon de faire la détection de collision à base de pixels, ce qui est plus précis que sur la base de rectangle pour des objets de forme irrégulière .
@kyralessa: vous ne voulez presque jamais faire des collisions pixel parfait dans les jeux. Par exemple, il fait un jeu avec des fusées. Avec une collision parfaite pixel, cela signifierait que si 1 pixel de l'aile d'une fusée toucherait 1 pixel de la pointe de son vaisseau spatial, il exploserait. Habituellement, vous définissez une zone de collision pour être une région beaucoup plus petite à l'intérieur des objets. Cela semble beaucoup mieux. – Toad
Ces rectangles vous décrirai sont appelés OBB (boîtes englobantes Oriented)
La façon de faire des collisions entre eux utilise le « la séparation théorème de l'axe »
Une page très agréable qui décrit en détail avec beaucoup de les images peuvent être trouvées here
Ils ne sont pas alignés s'ils sont pivotés. –
Vous avez raison, bien sûr. Je voulais dire OBB. La théorie représente encore ceux-là aussi; ^) – Toad
Vous pouvez également envisager simplement en utilisant une solution de la boîte pour cela et intégrer quelque chose comme la physique Farseer moteur:
http://farseerphysics.codeplex.com/
- 1. Détection de collision XNA
- 2. Détection de collision 2D entre rectangles
- 3. Détection de collision entre deux rectangles
- 4. GameQuery détection de collision
- 5. Distance minimale entre deux rectangles pivotés avec des angles différents
- 6. animation avec détection de collision?
- 7. Collision à base de tuiles dans XNA
- 8. Affichage des rectangles dans la fenêtre de jeu avec XNA
- 9. détection de collision
- 10. Détection de collision de Chipmunk
- 11. Détection de collision pour les cercles
- 12. C# Winform XNA Collision
- 13. Schéma de délégué de détection de collision
- 14. Détection de collision pour Actionscript 3
- 15. PGU détection de collision Tiles
- 16. détection de collision avec beaucoup d'objets
- 17. Simulation 2D de collision de corps (détection de collision rapide pour un grand nombre de balles)
- 18. En utilisant glRotate et glTranslate avec détection de collision
- 19. Détection de collision dans les STL hash_map
- 20. Détection de collision de carte de tuile
- 21. HTML5 Canvas: détection de collision de souris et de polygones
- 22. Détection de collision de sphère à rectangle dans actionscript 3.0?
- 23. Animation Silverlight et questions de détection de collision
- 24. Problème de détection de collision carrée (iPhone)
- 25. Dynamiquement modifier ou détruire un Texture2D pour le dessin et la détection de collision
- 26. détection de collision entre Accelerating Sphères
- 27. Utilisation de CGRectIntersectsRect pour la détection de collision
- 28. méthodes détection de collision en C++
- 29. Détection de collision 3D parfaite C++
- 30. Détection de collision entre deux cubes rotation
Vous nous demandez d'écrire une méthode pour vous ou en avez-vous déjà une? –
Je cherche quoi que ce soit. Si vous pouvez écrire une méthode pour moi, ce serait génial, mais des algorithmes ou des concepts seraient utiles aussi. – Stefan