XNA单击场景中的对象确定

时间:2013-11-09 20:45:23

标签: xna click collision

我正在尝试编写一个XNA游戏。但我是新人。我想确定场景中最顶层的对象。在矩形形式中,当两个矩形在屏幕上相交时,我想点击最顶部的一个。但我不知道如何从场景中发现最顶层的物体 有谁能够帮我?有没有办法呢?

1 个答案:

答案 0 :(得分:1)

这取决于您使用什么方法绘制它们。

  • 如果您使用SpriteSortMode.Deferred模式,则按照调用SpriteBatch.Draw的顺序绘制它们。通过这种方式,您可以知道哪个对象是最顶层的。要实现这一点,您需要检查列表,数组或其他内容中的每个对象,第一个(或最后一个,取决于您管理结构的方式)元素的Rectangle碰撞器包含您的点击将是最顶层的对象。一旦找到它,您需要break“扫描”列表/数组的周期,以便仅检测到该点击。

  • 如果您使用SpriteSortMode.BackToFrontFrontToBack,则有点难以理解。

参考here

<强>更新

当您使用Deferred模式绘制对象并且它们“碰撞”时,您确定已经绘制的最后一个对象是最顶层的。
如果您使用的是列表,则必须执行以下操作:

for (int i = spriteList.Count - 1; i >= 0; i--)
{
    if (spriteList[i].collisionRect.Contains(touch))
    {
        topMostSprite = spriteList[i];
        break;
    }
}