XNA/MonoGame 鼠标悬停在卡片上

XNA/MonoGame Mouse Over Cards

蓝色与绿色重叠,绿色与红色重叠。

每张卡片都可以 select 将鼠标移到它上面。但是我的碰撞箱没有深度概念(z 轴),这是一款 2D 游戏。

所以假设我想 select 绿色 卡片,当我将鼠标放在它上面时 绿色和红色是 selected 因为光标在绿色 HitBox 中,但也在红色 HitBox 中。

所以我的问题是我应该如何管理这个:当我有重叠的命中框时,如何只检查没有被覆盖的区域?

注意:我使用矩形相交和包含函数。

But the thing my hitboxes don't have a depth notion (z-axis), it's a 2D game....So my question is how should i manage this

仅仅因为它是一个 2D 游戏(我的意思是相机正在将一些世界从 xD 投影到 2D)并不意味着你的场景必须是 2D。因为您的卡片可以相互重叠 您的场景具有深度,因此它是 3D。

一旦意识到这一点,3D 场景中对象的命中检测就变得微不足道了。

  1. 从鼠标发射一条光线,反向投影到场景中
  2. 测试它击中了哪些对象
  3. 取离原点最近的第一个对象