Ich entwickle ein Kartenspiel in XNA.
Gibt es OnClick
in XNA ein Ereignis für Objekte?
Ich versuche, Karten zum Bewegen zu bringen, wenn der Spieler darauf klickt. In diesem Projekt gibt es eine Sprite-Klasse, die die Karte zeichnet, aber ich stecke ein wenig fest, weil ich nicht weiß, wie ich OnClick
Ereignisse oder ähnliches verwenden soll.
if(MouseLeftPress()){ DoSomething(); }
, woMouseLeftPress()
ein Verfahren , um die aktuellen und vorherigen Zustände linke Maustaste gedrückt schreiben , ist zu vergleichen. Ich finde das die meiste Zeit einfacher als Ereignisse zu implementieren.Sie müssen es selbst implementieren. Schauen Sie sich das Tutorial an: http://bluwiki.com/go/XNA_Tutorials/Mouse_Input
quelle
Mit XNA haben Sie gerade genug Zeit, um Ihre eigenen Eingabe-Klassen zu erstellen.
Ich würde die in diesem Blog-Beitrag beschriebene Mauseingabeklasse empfehlen ( Quellcode ). Es erkennt, dass eine Taste gedrückt, gehalten oder losgelassen wird, und lässt Sie diese Informationen entweder über Abfragen oder Ereignisse abrufen.
In diesem Blogbeitrag finden Sie auch Klassen für Tastatur- und Gamepad-Eingabegeräte.
quelle
Der eigentliche Code zum Überprüfen eines Mausklicks in XNA sieht ungefähr so aus.
quelle
Wenn Sie ein 3D-Spiel haben, können Sie die Auswahl implementieren, die hier beschrieben wird: http://create.msdn.com/en-US/education/catalog/sample/picking_triangle . Im Grunde genommen erzeugt dies einen Strahl von der Kamera zu der Stelle, an der die Maus klickt (mit einer kleinen Matrix, die nicht projiziert), und Sie prüfen, ob sich eines Ihrer Objekte mit dem Strahl überschneidet.
Wenn Ihr Spiel 2D ist, sollten Sie in der Lage sein, Fensterkoordinaten relativ einfach in Spielkoordinaten zu übersetzen. Überprüfen Sie anschließend, ob die ausgewählten Koordinaten innerhalb der Grenzen eines Ihrer Objekte liegen.
quelle
Der einfachste Weg, um zu sehen, ob die Maus gedrückt ist, ist dies
Jetzt in der Update-Methode hinzufügen
hoffe das hat geholfen
quelle