Я искал три дня и не нашел решения. Вот код:
if (keyboardState.IsKeyDown(Keys.Right))
{
for (int i = GlobalClass.BlocksPositions.Count - 1; i > 0; i--)
{
if (new Rectangle((int)GlobalClass.BlocksPositions[i].X, (int)GlobalClass.BlocksPositions[i].Y, bT.Width, bT.Height).Intersects(new Rectangle((int)Position.X, (int)Position.Y, Texture.Width, Texture.Height)))
{
c = 0;
}
else
{
c = 1;
}
}
if (c == 1)
{
Position.X += Speed;
}
}
Каждая позиция блока равна блоку, который я могу создать, нажимая на экран, после чего новая позиция блока заносится в список. В основном у меня есть список координат блоков в моем списке блоков. Затем я передаю условие для каждой позиции блока, условие Создать прямоугольник для каждой позиции блока и один для игрока ... если есть столкновение, игрок не будет двигаться в этом направлении. Когда я пробую код, Мой персонаж будет сталкиваться только с первым элементом списка, а не с другими, если я удаляю первый элемент, он сталкивается со следующим, но не с другими. Все переменные ТОЧНЫЕ, я знаю это, потому что я пытался заменить этот код примерно так:
if (keyboardState.IsKeyDown(Keys.Right))
{
for (int i = GlobalClass.BlocksPositions.Count - 1; i > 0; i--)
{
if (new Rectangle((int)GlobalClass.BlocksPositions[i].X, (int)GlobalClass.BlocksPositions[i].Y, bT.Width, bT.Height).Intersects(new Rectangle((int)Position.X, (int)Position.Y, Texture.Width, Texture.Height)))
{
GlobalClass.BlocksPositions.RemoveAt[i];
}
}
}
То же самое, но здесь, если он сталкивается, я удаляю элемент списка, это то же самое условие, но когда я пытаюсь это сделать, он обнаруживает все элементы и удаляет те, к которым я прикасаюсь. Я попробовал функцию foreach, и я получил те же результаты. В чем дело? Я уже многое делаю с переменными типа «делаю», поэтому я уверен, что проблема не в их значениях, а в том, что я с ними делаю. Помогите, пожалуйста! (