了解循环中的Calculs

时间:2011-08-06 04:07:18

标签: c# xna collision for-in-loop

我这里有这个小代码,像素从顶部落下,如果它们与块碰撞,它们将停留在块的表面上。然后,如果有一个其他像素落在不再下降的像素上,它将加起来。那就是我想要做的事情,但是在第二个像素加起来之后,没有更多像素可以在其他像素之上。我虽然j-1是索引中的当前int(-1)所以如果它是10,那么它将是9,所以我有点困惑为什么(int)Position [j - 1] .Y - 1 doesn工作正常。

public void ParticleUpdate()
    {
        for (int j = 0; j < 1000; j++)
        {
            Position[j].Y += Gravity;
            for (int u = 0; u < GlobalClass.BlocksPositions.Count; u++)
            {
                if (new Rectangle((int)GlobalClass.BlocksPositions[u].X, (int)GlobalClass.BlocksPositions[u].Y, 8, 8).Intersects(new Rectangle((int)Position[j].X, (int)Position[j].Y, 1, 1)))
                {
                    Position[j].Y = (int)GlobalClass.BlocksPositions[u].Y - 1;
                    //This code works perfectly.
                }
            }
            if (j - 1 > 0)
            {
                if (new Rectangle((int)Position[j - 1].X, (int)Position[j - 1].Y, 1, 1).Intersects(new Rectangle((int)Position[j].X, (int)Position[j].Y, 1, 1)))
                {
                    Position[j].Y = (int)Position[j - 1].Y - 1; 
                    //Here is the problem.
                }
            }
        }
    }

如果我放了很多块,有没有一种方法可以优化这个,我还有一些滞后问题?

0 个答案:

没有答案