c# - 如何在类似 Space Invaders 的游戏中执行子弹/敌人矩形碰撞检测?

标签 c# xna 2d collision-detection

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

  • cButton(这只是一个“播放”按钮,不需要任何帮助)。
  • 子弹
  • 游戏1
  • 敌人

附言这只是我的第二篇文章,对我放轻松 ;) 注意:玩家只会从一边移动到另一边,而敌人在海峡线上从上到下移动(如果这有帮助的话)

最佳答案

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

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
}

关于c# - 如何在类似 Space Invaders 的游戏中执行子弹/敌人矩形碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614471/

相关文章:

c# - HttpClient GetStringAsync - 它永远不会回来

xna - 通过将 2D Sprite 与 3D 模型混合来解决 Z 缓冲区问题

optimization - 两个纹理的非幂和内存消耗优化

数学我 - 二维电子游戏

xcode - Mac OS X SpriteKit 的替代品

带有接口(interface)的 C# 重载方法行为

c# - 实时复制缓冲区数据

c# - 在 C# 中打印字典键值对

c# - 为什么这个简单的算法总是返回相同的值?

Java - 向游戏添加控件的最佳方式