在我的训练 Space Invaders 变体中进行碰撞检测时,我遇到了一个问题,每次外星人被火箭击中时,它的(右)邻居的位置都会改变。
for (int i=0; i < alienEntity.Count; i++) // Move aliens
{
alienEntity[i].position = new Vector2((int)(alienEntity[i].position.X + alienMovingDirection * alienMovingSpeed), alienEntity[i].position.Y);
Rectangle alienRect = new Rectangle((int)(alienEntity[i].position.X), (int)(alienEntity[i].position.Y), alienTexture.Width, alienTexture.Height);
for (int j = 0; j < rocketEntity.Count; j++)
{
if (alienRect.Intersects(rocketRect[j]))
{
rocketEntity.RemoveAt(j);
rocketRect.RemoveAt(j);
alienEntity.RemoveAt(i);
}
}
}
被删除外星人右侧邻居的 x 位置受到加 1 或减 1 的影响。屏幕截图显示了外星人之间的水平间隙,这应该使受影响的邻居可见。