Понимание для в-в-петле исчислений - PullRequest
0 голосов
/ 06 августа 2011

У меня есть этот маленький код здесь, пиксели падают сверху, если они сталкиваются с блоком, они останутся на поверхности блока. Тогда, если есть другой Пиксель, падающий на пиксель, который больше не падает, он сложится. Ну, это то, что я пытался сделать, но после сложения второго пикселя, больше нет пикселей, которые могли бы быть поверх других. Я думаю, что 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.
                }
            }
        }
    }

Также у меня есть некоторые проблемы с лагом, если я ставлю много блоков, есть ли способ оптимизировать это?

...