2016-05-24 3 views
0

Так я работаю над игрой, в стороне от игрового движка, и у меня есть цикл для обнаружения столкновений со всеми объектами в списке панелейиндекса вне диапазона в течение цикла

Вот код:

for (int x = 1; x <= 2; x++) 
{ 
    if (player.obj.Bounds.IntersectsWith(walls[x].Bounds)) 
    { 
     MessageBox.Show("COLLIDING"); 
    } 
} 

в настоящее время существует только два объекта, добавленные в список называемых стенами И каждый раз, когда я иду, чтобы запустить это говорит мне Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index я не знаю, что делать, я настройку, если заявление не так?

Я просто попытался вынуть его из цикла for и заменить x на 0, и когда я коснулся этого объекта, он сказал, что столкнулся, поэтому я знаю, что я не установил неверное утверждение if.

ответ

3

Как вы можете или не можете знать, массивы начинаются с 0 в индексе, так что ваш массив должен быть похожим на это.

for (int x = 0; x < 2; x++) 
{ 
    if (player.obj.Bounds.IntersectsWith(walls[x].Bounds)) 
    { 
     MessageBox.Show("COLLIDING"); 
    } 
} 
+0

я все еще получаю ошибку, когда я делаю что –

+0

ли помните, что вы иметь 'х <2' вместо' х <= 2'? Как долго массив стен? –

+0

Хорошо, я исправил его, спасибо! –

1

Если есть 2 объекта в стенах петли нужно не идти на х = 2

for (int x = 0; x < 2; x++) 
     { 
      if (player.obj.Bounds.IntersectsWith(walls[x].Bounds)) 
      { 
       MessageBox.Show("COLLIDING"); 
      } 
     } 

Как Массивы начинаются с индекса 0

0

У вас есть два элемента в walls[] массиве означает, что они Ware находится в walls[0] и walls[1] (Так как .Net-массивы следуют за индексом 0), и поэтому walls[2] не связан; Поэтому вы должны начать цикл с 0, чтобы получить первый элемент и установить цикл до 2. Но я настоятельно рекомендую вам использовать длину в walls вместо 2

for (int x = 0; x < walls.Length; x++) 
{ 
    if (player.obj.Bounds.IntersectsWith(walls[x].Bounds)) 
    { 
     MessageBox.Show("COLLIDING"); 
    } 
} 
Смежные вопросы