ここにこの小さなコードがあります。ピクセルは上から落ち、ブロックと衝突するとブロックの表面にとどまります。次に、落下していないピクセルに他のピクセルが落下している場合、それは加算されます。それが私がやろうとしていたことですが、2番目のピクセルが追加された後、他のピクセルの上に乗るピクセルはもうありません. j-1 はインデックス (- 1) の現在の int であり、10 の場合は 9 になると思います。正常に動作しません。
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.
}
}
}
}
また、多くのブロックを配置すると遅延の問題が発生します。これを最適化する方法はありますか?