【发布时间】:2014-06-04 23:23:36
【问题描述】:
我正在尝试通过鼠标输入在我正在制作的塔防游戏中放置塔。一切正常,除了当我放下塔时,它没有放在我的指针所在的位置。我进行了一个小测试,让游戏在它认为我的指针所在的位置绘制了一个精灵,并将它拉离我的指针很远。这是我用来获取鼠标坐标的代码:
mouseState = Mouse.GetState(); //mouseState is of type MouseState
cellX = (int)(mouseState.X / 80);
cellY = (int)(mouseState.Y / 80);
tileX = cellX * 80;
tileY = cellY * 80;
这是塔使用坐标的代码:
Tower tower = new Tower(BlueberryBushTexture, new Vector2(tileX, tileY));
我能想到的唯一一件事是我必须使用错误的 MouseState 坐标。谢谢!!!
【问题讨论】:
-
这个数学,对我来说,看起来像是将
tileX和tileY设置为鼠标坐标的整数部分,因为你要除然后乘以 80。“cell ”和“瓷砖”?在前两次计算之后,cellX和cellY不是已经代表了您单击的位置的图块坐标吗? -
我试过了,但没用,只是在左上角生成了我所有的塔
-
我使用了该部分教程中的代码,这就是他所说的
-
在上面的例子中,如果鼠标在位置 (77, 114) 并且我们使用上面的等式来计算它在数组空间中的位置,我们得到以下结果: CellX = (int) (77 / 32) = (int) (2.40625) = 2 这是正确的,正如我们在图像中看到的那样,该点位于第三个正方形中。现在我们知道指针在哪个单元格中,我们可以通过将其乘以 32(我们的瓦片的寡妇)来计算该单元格在级别空间中的位置 TileX = 2 * 32 = 64
-
是的,你是对的。我的错。尝试输入打印语句,点击时查看
tileX和tileY的值;检查并查看这些值是否符合您的预期。您在实际放置塔时可能有一些错误的逻辑。