Bonsoir,
Je me suis mis très récemment à XNA afin de me consacrer enfin à la programmation de jeux vidéo après pas mal de temps à avoir développé des applications de gestion. J'ai réussi à trouver quelques tutos intéressants sur les bases (afficher un sprite, déplacer un sprite, rotation d'un sprite,...). Dans un des tutos, l'auteur utilisait deux sprites: un tank et son canon. Ensuite il nous expliquait l'avantage d'avoir une classe qui hérite de DrawableGameComponent. Donc en bon élève je fais de même, j'ai crée deux classes qui héritent de DrawableGameComponent, une pour le tank et une pour le canon. Voila pour l'intro, maintenant mon problème.
Ce que j'ai voulus faire, dans ma classe Tank, j'ai une propriété privé qui est de type classe Canon, et cela aurait donc était à ma classe Tank d’appeler les méthodes Update et Draw de la classe Canon au bon moment(dans les méthodes Update et Draw de la classe Tank). La position du Tank est représenté par une propriété de type Vector2, et il se trouve que mon Canon doit avoir la même position que le tank (le canon étant au centre du Tank, ça arrange bien les choses...). Alors dans mon empressement, sans réfléchir, je me dit que je peux passer au constructeurs de la classe Canon le Vector2 du Tank. Comme ça quand j'update la position du Tank, cela va se répercuter sur le Canon. Manque de peau cela ne marche pas. Stupide comme je suis et à vouloir aller trop vite, il y a un détail (et pas des moindre) que j'ai zappé, Vector2 est une struct et pas une classe. Ma question est donc comment puis-je partager une position qui est commune entre mes deux objets?
J'ai pensé à faire en sorte que le Tank la passe en paramètre lorsqu'il appelle une fonction d'update du Canon, mais cela ne me convient pas trop. Voulant rester dans mon idée de donner qu'un fois la position au Canon, puis après la mettre à jours juste à travers la classe Tank, je pensais créer une classe qui n'aurait qu'une propriété de type Vector2, et là j'aurais pu donner cette classe au Canon qui quand il souhaite mettre à jours sa position récupère le Vector2. Mais créer une classe juste pour ça, je trouve pas ça top. Donc je voulais avoir votre avis sur la question.
Je me doute que le problème n'est pas forcement très compliqué, et même si ça se trouve ne mérite pas de se poser. Mais ça me tracassait, alors je voulais avoir un avis extérieur. Désolé d'avance si le problème, et la question qui le suit sont stupides.
Je vous remercie d'avance pour vos réponse.
Partager