我正在制作一个僵尸生存游戏,我使用类和列表创建玩家子弹和僵尸,但我无法弄清楚如何检查它们之间的碰撞。 僵尸和子弹都是使用类创建的。
声明列表
List<Bullets> bullets = new List<Bullets>();
List<Zombies> zombies = new List<Zombies>();
在更新中运行
for (int i = 0; i < bullets.Count; i++)
{
bullets[i].Rectangle = new Rectangle((int)bullets[i].position.X, (int)bullets[i].position.Y, bullets[i].texture.Width, bullets[i].texture.Height);
if (!bullets[i].isVisible)
{
bullets.RemoveAt(i);
i--;
}
}
提前致谢。
答案 0 :(得分:0)
最简单的,如果你想看看两个矩形是否相互碰撞,你可以使用
所以只需循环遍历所有子弹和所有僵尸,看看它们是否相交。你有碰撞。
当然,你可以通过减少比较来获得更好的性能,例如使用四叉树来防止需要检查年龄较大的实体的碰撞,但是两个循环会很好。
答案 1 :(得分:0)
您需要检查子弹矩形是否相互碰撞 见:Intersects
首先,你需要给你的僵尸和子弹一个矩形 (你可能想在自己创建的僵尸和子弹类中这样做)
然后进行循环,如果发生碰撞,检查列表中的项目符号。
像这样:foreach (Zombies z in zombies)
{
foreach (Bullets b in bullets)
{
if (b.rectangle.Intersects(z.rectangle))
{
// so your loop can delete the bullet
b.isVisible = false;
// do something with the zombie
}
}
}