我对 XNA 还是很陌生,所以请原谅这篇文章中的任何愚蠢的问题和陈述(附加的问题是我正在使用带有 .Net 4.0 的 Visual Studio 2010,这也意味着网络上的示例很少 - 嗯,没有我很容易找到):
我在一个“游戏”中有两个 2D 对象,我用它们来了解有关 XNA 的更多信息。我需要弄清楚这两个对象何时相交。
我注意到 Texture2D 对象有一个名为“Bounds”的属性,该属性又具有一个名为“Intersects”的方法,该方法将 Rectangle(另一个 Texture2D.Bounds)作为参数。
但是,当您运行代码时,即使对象位于屏幕的不同侧,它们也总是相交。当我进入代码时,我注意到对于 Texture2D 边界,当您将鼠标悬停在边界和 X 上时,我会返回 4 个参数,并且 Y 坐标对于两个对象总是读取“X = 0,Y = 0”(因此它们总是相交)。
让我感到困惑的是,Bounds 属性位于纹理上,而不是位于对象的位置(或 Vector2)上。我最终创建了一个小辅助方法,它接收对象和位置,然后计算它们是否相交,但我确信一定有更好的方法。
任何建议,指针将不胜感激。
吉尼尔