如何在类似太空侵略者的游戏中执行子弹/敌方矩形碰撞检测?

时间:2012-07-23 14:24:07

标签: c# xna 2d collision-detection

我最近发布了一个关于射击子弹的问题,我(当然有帮助)设法弄明白了。我现在有一个新问题,我无法弄清楚子弹和我的敌人之间的碰撞检测。我不想一次发布我的所有代码所以这里是我的类列表,我将根据您的要求发布代码:

  • cButton(这只是一个'播放'按钮,无需帮助)。
  • 子弹
  • 的Game1
  • 敌人

P.S。这只是我的第二篇文章,对我来说很容易;)注意:玩家只能左右移动,敌人在海峡线上从上到下移动(如果这有帮助的话)

2 个答案:

答案 0 :(得分:2)

这是我以前用过的一种非常简单的方法。在子弹周围设置一个矩形:

Rectangle bulletRect = new Rectangle(bulletPosition.X, bulletPosition.Y, bulletText.Width, bulletText.Height);

敌人也一样:

Rectangle enemyRect = new Rectangle(enemyPosition.X, enemyPosition.Y, enemyText.Width, enemyText.Height);

然后在测试碰撞时,您可以使用:

if(bulletRect.Intersects(enemyRect))
{
   //We have a collision
}

答案 1 :(得分:0)

我假设您必须检查子弹是否进入了船舶当前占据的区块,如果是这样,则将其销毁并移除子弹。如果您发布相关代码,这可能会有所帮助。 :)