2010-07-21 1 views
-1

J'ai créé quelques maisons dans mon monde XNA en utilisant le code comme ceci dans ma méthode de LoadContent:comment faire mon objet dans XNA ne peut pas être saisi par des humains

house.Model = Content.Load<Model>("Models\\oldgreekhouse"); 
house.Position = new Vector3(0, 0, 0); 
house.Rotation = new Vector3(0f, 0f, 0f); 
house.Scale = 0.125f; 

Ensuite, j'appelle la méthode Dram() pour il a montré dans ma ville virtuelle. Cependant, j'ai un problème, c'est que je peux aller à l'intérieur du bâtiment que je ne veux pas, comment puis-je faire cela? Je sais quelque chose appelé BoundBox, mais je ne sais pas si cela fonctionnera pour mon cas.

Merci beaucoup.

Répondre

3

Vérifier la position de la « maison » et pour la position de votre « humain » comme

if(human.rectangle.X + human.rectangle.width >= house.rectangle.x && human.rectangle.X <= house.rectangle.x + house.rectangle.width) 
{ 
// the human entered here, just disallow any walking action here 
} 

Notez que vous devez ajouter aussi la vérification des Y cordinates. Aussi, vous pouvez utiliser une boîte de délimitation, j'ai aussi entendu parler, mais jamais utilisé. J'espère que ceci vous aidera.

+0

désolé, pensé à 2D ... Je devrais cesser de travailler et aller Sleepin' –

2

Pour les bâtiments, un cadre de délimitation serait une assez bonne approximation pour la détection de collision. La meilleure façon de calculer une zone de délimitation consiste à utiliser un processeur de contenu personnalisé.

voir: http://www.harding.edu/dsteil/xna/notes/Making%20Bounding%20Boxes%20For%20Models.htm

Une fois que vous avez un modèle chargé avec un cadre de sélection que vous avez besoin de traduire les boîtes aux postes qui correspondent à vos emplacements d'objets. Vous pouvez le test avec un code comme

humanBoundingBox.Intersects (houseBoundinBox)

Questions connexes