Вычисление столкновений прямоугольника с линиями пути - PullRequest
2 голосов
/ 13 сентября 2011

Я искал образцы и учебные пособия, но не могу найти ничего конкретного.

Я делаю 2D игру XNA C # и хочу определить окончательную позицию игрока, когда он достигнет одной или нескольких линий пути, чтобы он не пересек их.

Плеер состоит из прямоугольника столкновения, все линии пути - это сегменты. Так что в основном у меня есть прямоугольник столкновения игрока и прямоугольник столкновения позиции следующего игрока. Если позиция следующего игрока сталкивается с линиями пути, я хочу найти максимальное смещение, которое может испытать игрок.

Изображение показывает более или менее то, что я хочу сделать:

Picture

Я хочу найти положение красного прямоугольника.

У кого-нибудь есть какой-нибудь алгоритм, решение или какая-нибудь ссылка, которая может мне помочь? Может быть даже образец.

1 Ответ

0 голосов
/ 14 сентября 2011

Предполагая, что у вас уже есть средства, чтобы проверить, содержит ли конкретное поле столкновения столкновение или нет, я бы рекомендовал выполнить своего рода бинарный поиск между текущей позицией игрока и полем столкновения: выбрать точку на полпути между вашим столкновением ипредыдущая известная коробка без столкновений.Проверьте снова с этой новой коробкой столкновения.Если это не столкновение, выберите точку на полпути между этой точкой и известным ящиком столкновения, в противном случае выберите точку на полпути назад.Повторяйте до тех пор, пока не найдете не сталкивающийся прямоугольник с уровнем точности, которым вы удовлетворены (скажем, порядка от 1 до 2 пикселей).С помощью всего лишь нескольких тестов вы сможете найти такую ​​точку.

...