J'ai un jeu Breakout dans lequel, à un moment donné, je détecte la collision entre la balle et la raquette avec quelque chose comme ceci:
// Ball class
rectangle.Intersects(paddle.Rectangle);
Existe-t-il un moyen d'obtenir les coordonnées exactes de la collision ou des détails à ce sujet avec le courant XNA API
?
J'ai pensé faire quelques calculs de base, comme comparer les coordonnées exactes de chaque objet au moment de la collision. Cela ressemblerait à quelque chose comme ceci:
// Ball class
if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2))
// Collision happened on the left side
else
// Collision happened on the right side
Mais je ne suis pas sûr que ce soit la bonne façon de procéder.
Avez-vous des conseils sur peut-être un moteur que je devrais utiliser pour y parvenir? Ou même de bonnes pratiques de codage utilisant cette méthode?
la source
get the rectangle where the two overlap
fonctionnalité est-elle disponible sur leXNA API
ou je dois télécharger des trucs supplémentaires, comme lePlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
ourectangle.Y
ou tout ce que vous voulez accéder.Mise à jour: si vous utilisez MonoGame, la version bêta 3.0
Rectangle Rectangle.Intersect(rectangle, rectangle)
n'existe pas. Vous pouvez utiliser le code ci-dessous à partir du kit XNA Platformer à la place.Vous pouvez télécharger le kit de démarrage XNA Platformer ( porté sur Windows 7 ). Il est livré avec une méthode d'extension d'assistance qui renvoie un rectangle décrivant l'intersection de deux rectangles:
la source
ssb
, mais merci beaucoup pour cela. Je vais à coup sûr entrer dans ce port! Merci beaucoup!