1

在我的训练 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 的影响。屏幕截图显示了外星人之间的水平间隙,这应该使受影响的邻居可见。

截屏

4

0 回答 0