我正在尝试编写 XNA 游戏。但我是新人。我想确定场景中最顶层的对象。在矩形形式中,当两个矩形在屏幕上相交时,我想点击最上面的一个。但我不知道如何从场景中检测到最上面的物体。
有谁能够帮我?有没有办法呢?
问问题
57 次
1 回答
1
这取决于您使用什么方法来绘制它们。
如果您使用模式,则按调用
SpriteSortMode.Deferred
顺序绘制它们。SpriteBatch.Draw
通过这种方式,您知道哪个对象是最顶层的。为了实现这一点,您需要检查列表、数组或其他任何对象中的每个对象,第一个(或最后一个,这取决于您如何管理结构)元素的Rectangle
包含您的点击的对撞机将是最顶部的目的。找到它后,您需要break
循环“扫描”您的列表/数组,以便仅检测该点击。如果您正在使用
SpriteSortMode.BackToFront
或者FrontToBack
很难知道。
参考这里。
更新
当您使用Deferred
模式绘制对象并且它们“碰撞”时,您肯定知道最后绘制的对象是最顶部的。
如果您使用的是列表,则必须执行以下操作:
for (int i = spriteList.Count - 1; i >= 0; i--)
{
if (spriteList[i].collisionRect.Contains(touch))
{
topMostSprite = spriteList[i];
break;
}
}
于 2013-11-10T01:11:33.467 回答