我想测试两个 BoundingBox
是否相交。我有一个列表:
List<BoundingBox> Mapa_BB = new List<BoundingBox>();
然后我将边界框添加到这个列表中,效果很好——我通过将它更改为一个字符串然后绘制它来测试它——所以我确信它们存在。 BoundingBox hero;
是我的英雄的边界框。
接下来,我做了一个函数来测试是否发生了碰撞:
public void Collision()
{
foreach (BoundingBox BB_map in Map_BB)
{
if (hero.Intersects(BB_map))
{ test = "true"; }
else
{ test = "false"; }
}
}
如您所见,如果发生碰撞,我想将字符串变量 test
设置为 "true"
;如果不是,则为 "false"
。我会认为我的列表有问题,但如果我的英雄与列表中的最后一个边界框发生碰撞,那么它就可以正常工作;对于任何其他边界框,它不会。
最佳答案
如果你发现了一个相交的盒子,你需要打破foreach
循环:
public void Colision()
{
foreach (BoundingBox BB_map in Map_BB)
{
if (hero.Intersects(BB_map))
{
test = "true";
break;
}
else
test = "false";
}
}
如果没有 break;
,以下不匹配的框会将 test
设置回 "false"
。
关于c# - 从通用列表中测试 BoundingBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19383146/