2011-05-15 5 views
1

Tout d'abord, le joueur contrôlera un objet circulaire. Im essayant de faire la collision dans un jeu basé par tuile. Un de mes problèmes n'est pas tous les carreaux sont carrés. Ils sont toutes sortes de formes irrégulières. La façon dont je pensais gérer cela était de faire deux vérifications; 1) vérifier si le joueur est à portée d'une tuile marquable 2) vérifier (en quelque sorte) s'il est réellement entré en contact avec la tuileCollision plus précise basée sur des tuiles

Comment est-ce que je ferais ceci? Ou y a-t-il un meilleur moyen? J'utilise C#/XNA (probablement pas important)

Répondre

1

Il y a plusieurs façons de gérer cela. Personnellement, je garderais une trace de tous les objets collables dans une liste. S'il y aura beaucoup d'objets (disons plus de 200), vous pouvez garder plusieurs listes. Chaque liste représenterait un quart ou huitième de l'écran. Lors de chaque mise à jour, vous pouvez parcourir les listes et vérifier la collision des objets (les mosaïques se chevauchent). Si les tuiles se chevauchent alors vous devriez vérifier Pixel Perfect Collisions.

0

Je vous recommande d'utiliser un moteur physique. Vous pouvez trouver des tutoriels et de la documentation pour chacun sur leurs sites Web ou par une recherche google. Ce sont des moteurs de physique XNA:

  1. Farseer Physics
  2. JigLibX
  3. PhisiXNA (Je viens de découvrir ce dans une recherche Google et ne peut pas se porter garant pour elle, mais les deux autres sont très bien utilisés dans le XNA communauté)
1

Vous pouvez d'abord vérifier rectangular collision et s'il y a un contrôle de collision pour per-pixel collision.

Ces deux liens sont vraiment géniaux et constituent une bonne introduction à la détection de collision de base avec XNA.

0

Je prévois de créer la solution suivante pour mon prochain projet:

  1. Chaque gameobject dans mon jeu aura un champ CollisionRectangle.
  2. Créer un CompositeRectangle objet qui sera composé de plusieurs rectangles. L'avantage de ceci est que (dans mon cas au moins) il peut être créé en utilisant un processeur de Content Pipeline au moment de la construction, en obtenant mon CollisionRectangle gratuitement, et en le vérifiant comme d'habitude en appelant (...)
Questions connexes