我将如何进行并记录发生的碰撞数量?我有一个简单的碰撞检测,它将检测一个物体是否与另一个碰撞,我现在希望记录它们的碰撞。
碰撞代码
public void CompositionTarget_Rendering(object sender, EventArgs e)
{
appleTimer += 1;
if (appleTimer > 60)
{
appleTimer = 0;
AddApple(new Apple());
}
for (int indx = 0; indx < myapples.Count; indx++)
{
myapples[indx].Update(LayoutRoot);
bool collided = DetectCollision(myapples[indx], myPig);
if (collided)
{
// record how many apples are eaten here
RemoveApple(myapples[indx]);
indx--;
}
}
答案 0 :(得分:1)
如果你在循环遍历列表时必须从列表中删除对象,则更容易向后循环,以免弄乱索引:
int eatenAppleCount = 0;
for (int indx = myapples.Count - 1; indx >= 0; indx--) {
myapples[indx].Update(LayoutRoot);
bool collided = DetectCollision(myapples[indx], myPig);
if (collided) {
eatenAppleCount++;
RemoveApple(myapples[indx]);
}
}
注意:如果myapples
是List<Apple>
,那么您可以使用
myapples.RemoveAt(indx);
如果myapples
是数组,请将其替换为列表。只有在长度不变的情况下才应使用数组。列表是可以增长和缩小的动态“数组”。