Je rencontre un problème d'essayer de mettre en œuvre un système d'inventaire dans XNA (cela n'a pas vraiment d'importance, pourrait être n'importe quelle plate-forme) mais jusqu'à présent. Voici le problème que j'essaie de comprendre:
Comment puis-je obtenir un objet du monde (pensez que lorsque vous tuez un monstre, il laisse tomber une armure) et le mettre dans l'inventaire de mon joueur?
Si un inventaire n'est qu'une liste d'objets, techniquement, comment pourrais-je faire entrer Steel Sword du monde dans l'inventaire de mon joueur sans qu'une classe fasse plus d'une chose?
J'ai actuellement une structure d'élément, qui contient une valeur hexadécimale unique, un décompte du nombre d'éléments (pour les empilables, comme des flèches) et une texture pour le rendu dans l'inventaire, et quelques autres propriétés sans importance (nom, description, etc.) .
Ce serait une mauvaise conception si je devais modifier ma classe d'objets existante pour abriter une position mondiale, ainsi que la détection de collision (je ne veux pas que l'article tombe à travers la terre).
Merci pour toute considération!
WorldItem
qui est séparé du vôtreInventoryItem
? (Peut-êtreWorldItem
a-t-il unInventoryItem
modèle qui est mis dans l'inventaire du joueur lorsqu'il est ramassé).Inventory
qui prend unWorldItem
et l'ajoute commeInventoryItem
. Pour qu'il puisse également gérer les cas où les éléments doivent être empilés (par exemple, les flèches).Réponses:
L'approche que j'opterais serait d'avoir 2 structures (ou classes) différentes.
WorldItem
etInventoryItem
.Vous pouvez ensuite ajouter un en
InventoryItem
tant que propriété / champ deWorldItem
ce qui est placé dans l'inventaire du joueur lorsque l'objet mondial est ramassé.Vous voudriez une méthode quelque part (sur la classe de joueur, ou l'une des classes d'objets) qui gère l'ajout d'un élément d'inventaire à l'inventaire du joueur, pour gérer l'empilement comme des objets.
la source
Comme mentionné précédemment, la division en plusieurs classes ou tableaux serait votre meilleur pari. Je créerais 3 classes, Monde, Joueur et Objet. La classe mondiale aurait un List WorldItems, ainsi que la classe Player, mais nommée Inventaire. Lorsqu'un joueur prend un objet, vous le déplacez de la liste dans le Monde. à la liste de la classe Player.
Dans la boucle de tirage de votre jeu, vous pouvez faire une boucle qui dessine tous les éléments de la liste WorldItems à l'écran, mais ignore bien sûr la liste d'inventaire sur l'objet joueur.
la source