2016-04-10 7 views
0

Ich erstelle ein Spiel, das einen kachelbasierten Kampf auf einem Teil des Bildschirms verwendet. Ich habe bereits eine 2D-Anordnung von Knoten (jede mit einer Eckposition, um meine Einheiten zu zeichnen) abgebildet und ich habe bereits einige Tests mit dem Zeichnen der tatsächlichen Einheiten gemacht. Jetzt muss ich anfangen, an der Mausauswahl zu arbeiten, aber ich habe Probleme, einen Weg zu finden, einen Mausklick auf einen bestimmten Knoten im Array abzubilden. Ich habe die Positionen in jedem Knoten gespeichert, aber ich weiß nicht, wie genau ich sie verwenden soll. Ich möchte in der Lage sein, jemanden linksklicken zu lassen, um ein Quadrat zu markieren und zu registrieren, welches Quadrat ich tatsächlich ausgewählt habe. Irgendeine Hilfe?Wie funktioniert die Mausauswahl im Raster? Monogame/XNA

This is an example of part of my grid which is in the bottom half of my screen

+0

Zeigen Sie, wo Ihre Zellenpositionen gespeichert sind? – LibertyLocked

Antwort

1

Rectangle hat eine Methode Contains(Point), und Sie können es verwenden, um leicht zu erkennen, ob ein Punkt innerhalb des Rechtecks ​​ist.


Angenommen Ihre Node Klasse eine Eigenschaft BoundingRectangle hat.

class Node 
{ 
    // ... 
    public Rectangle BoundingRectangle 
    { 
     get { return new Rectangle(x, y, width, height); } 
    } 
    // ... 
} 

Jetzt Mausklicks zu handhaben:

MouseState mouseState = Mouse.GetState(); 

if (mouseState.LeftButton == ButtonState.Pressed) 
{ 
    foreach (Node n : nodes) 
    { 
     if (n.BoundingRectangle.Contains(mouseState.Position)) 
     { 
      // TODO: Code to handle node being clicked... 
     } 
    } 
} 
+0

Das war genau das, wonach ich suchte. Danke, ich werde das prüfen. –

Verwandte Themen