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