列表XNA中事物之间的冲突
本文关键字:之间 冲突 XNA 列表 | 更新日期: 2023-09-27 17:50:25
我正在制作一款僵尸生存游戏,我使用类和列表来创建玩家子弹和僵尸,但我不知道如何检查它们之间的碰撞。僵尸和子弹都是使用类创建的。
声明列表
List<Bullets> bullets = new List<Bullets>();
List<Zombies> zombies = new List<Zombies>();
Running in update
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--;
}
}
在最简单的情况下,如果您想查看两个矩形是否相互碰撞,您可以使用
矩形。相交
所以就在所有的子弹和僵尸之间循环,看看它们是否有交集。这是一个碰撞
当然,你可以通过减少比较来获得更好的性能,比如使用四叉树来防止需要检查过期实体的碰撞,但是两个循环也可以。
您需要检查子弹矩形是否相互碰撞。
参见: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
}
}
}