如何在网格上进行鼠标选择? Monogame/XNA

How to do mouse selection on grid? Monogame/XNA

我正在创建一个在屏幕的一部分上使用基于图块的战斗的游戏。我已经映射了一个二维节点数组(每个节点都有一个角位置来绘制我的单位)并且我已经完成了一些绘制实际单位的测试。现在我需要开始处理鼠标选择,但我无法找到将鼠标点击映射到数组中特定节点的方法。我在每个节点中都存储了位置,但我不知道如何使用它们。我希望能够让某人左键单击一个方块并有办法注册我实际选择的方块。有帮助吗?

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

Rectangle有一个方法Contains(Point),你可以用它轻松检测一个点是否在矩形内。


假设您的 Node class 有一个 属性 BoundingRectangle

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

现在处理鼠标点击:

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...
        }
    }
}