0

ここにこの小さなコードがあります。ピクセルは上から落ち、ブロックと衝突するとブロックの表面にとどまります。次に、落下していないピクセルに他のピクセルが落下している場合、それは加算されます。それが私がやろうとしていたことですが、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.
                }
            }
        }
    }

また、多くのブロックを配置すると遅延の問題が発生します。これを最適化する方法はありますか?

4

0 に答える 0