Делаю клон танчиков 1994 года. В шарпе новичок. Нужно проверять коллизии. Решил проверять отрисовкой и проверкой столкновений прямоугольников типа Regtangle. Перед танком прорисовывается прямоугольник, так же стены прорисовываются с прямоугольниками. Прямоугольникик стен это массив Rectangle. Делаю проверку через Rectangle.IntersectWith(). Мой алгоритм заключается в том что происходит перебор через foreach ( for тоже пробовал ) прямоугольника танка с прямоугольниками на карте ( все это проверяется на нажатие клавиши, либо в таймере) , и такой алгоритм не работает, почему не понимаю. Может у кого-нибуть будут мысли или предложения получше? Сижу уже над проблемой коллизий уже не первый день.
Rectangle.IntersectWith() работает 100%, у вас проблема в данных или в логике их изменения. Например вы сначала сделали проверку в текущих позициях, а потом подвинули и они у вас налезли.
DAWNLOADER, Да не нужно писать код, он мало кому интересен.
Где ваша проверка которая не сработала?
Почему она не сработала, какие данные там были?
Эти данные верные или нет?
Почему они оказались не верными?
Или почему это условие проверки не дало нужный результат.
П.С. У вас код сработает, только если последний прямоугольник выдаст пересечения, а в противном случае следующий его результат затрёт.
foreach(var item in map._rectmap)
{
if (_tankPlayer._rectplayer.IntersectsWith(item)) { _stop = true; return; }
else _stop = false;
}
И все равно ни чего не выходит.
Если сделать вывод в этом переборе любой ячейки в MessageBox, то есть вывод x,y и размеры то координаты и размеры будут по нулям. Но если в классе формы выводить то же самое в тот же label то будут и координаты и размеры. Не знаете ли в чем может быть такая проблема?
Вызов метода происходит в таймере. При true таймер останавливаю. Такое чувство что прямоугольники перерисовываются и постоянной координаты у них нет.