我这里有这个小代码,像素从顶部掉落,如果它们与块碰撞,它们将停留在块的表面上。然后,如果有另一个像素落在不再下降的像素上,它将加起来。嗯,这就是我想要做的,但是在第二个像素加起来之后,就没有更多的像素会超过其他像素。我虽然 j-1 是索引中的当前 int (- 1) 所以如果它是 10,那么它将是 9,所以我有点困惑为什么 (int)Position[j - 1].Y - 1 没有不能正常工作。
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.
}
}
}
}
如果我放了很多块,我也会遇到一些滞后问题,有没有办法优化这个?