Je développe un jeu de cartes en XNA.
Y a-t-il un OnClick
événement dans XNA pour les objets?
J'essaie de faire bouger les cartes lorsque le joueur clique dessus. Dans ce projet, il y a une classe Sprite qui tire la carte, mais je suis un peu coincé parce que je ne sais pas comment utiliser les OnClick
événements ou quelque chose comme ça.
if(MouseLeftPress()){ DoSomething(); }
, oùMouseLeftPress()
est une méthode que vous écrivez pour comparer les états actuel et précédent de la souris avec le bouton gauche. Je trouve cela plus facile que d'implémenter des événements la plupart du temps.Vous devrez l'implémenter vous-même. Essayez de consulter le didacticiel sur: http://bluwiki.com/go/XNA_Tutorials/Mouse_Input
la source
XNA ne vous donne que juste assez pour construire vos propres classes d'entrée - et vous devriez le faire en tenant compte de l'utilitaire qu'elles offrent.
Je recommanderais la classe d'entrée de souris décrite dans cet article de blog ( code source ). Il détecte un bouton enfoncé, maintenu ou relâché, et vous permet d'obtenir ces informations via des sondages ou des événements.
Sur une note connexe, le même article de blog fournit également des classes de périphériques d'entrée de clavier et de manette de jeu.
la source
Le code réel pour vérifier un clic de souris dans XNA est quelque chose comme ça;
la source
Si votre jeu est en 3D, vous pouvez implémenter la sélection, qui est décrite ici: http://create.msdn.com/en-US/education/catalog/sample/picking_triangle . Fondamentalement, cela crée un rayon de la caméra à l'endroit où la souris clique (avec une petite matrice sans projection là-dedans), puis vous vérifiez si l'un de vos objets a été intersecté par le rayon.
Si votre jeu est en 2D, vous devriez pouvoir traduire les coordonnées de la fenêtre en coordonnées de jeu assez facilement. Vérifiez ensuite si les coordonnées sélectionnées se trouvent dans les limites de l'un de vos objets.
la source
La façon la plus simple de voir si la souris est cliquée est la suivante
maintenant dans la méthode de mise à jour, ajoutez ceci
j'espère que cela a aidé
la source