Как исправить очень странную проблему с обнаружением линий/прямоугольников? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как исправить очень странную проблему с обнаружением линий/прямоугольников? [закрыто]

Сообщение Anonymous »

Я программирую очень простой 2D-физический движок для игры. Движок спроектирован довольно быстрым, поэтому поначалу я надеялся использовать для всего ограничивающие рамки, выровненные по осям.
Физический движок вычисляет препятствия впереди для каждого пикселя, в котором перемещается прямоугольник. Если он обнаружит впереди препятствия, он не сдвинет его, а остановит. Чтобы выполнить проверку, я просто просмотрел все сплошные игровые объекты и проверил, находится ли рядом с ними прямоугольник. (на один пиксель от прямоугольника, чтобы они никогда по-настоящему не «касались» и оба застряли!)
Ну, функция столкновения не работала. Я использовал типичную функцию столкновения, которую можно найти в Интернете: выясните, не пересекаются ли они, и отмените результат.
Интересно, и в этом суть всего вопроса, функция столкновения работала только для верхней и левой сторон прямоугольника. Пожалуйста, дайте мне знать, как мне добиться столкновения нижней и левой частей!
После того, как прямоугольники не сработали, я решил переключиться на линии. Чтобы проверить, пересекаются ли линии, я использовал этот алгоритм (с несколькими небольшими изменениями), так как полагал, что он будет проверен в боевых условиях и быстро появится на конкурентном сайте программирования. (Если вам интересно, позже я также опробовал алгоритм на компьютерных фанатах, и он дал почти идентичные результаты.)
На этот раз я построил обоих актеров из 4 строк. Если актер движется вправо, проверяется правый датчик. Если вверх, проверяется верх и т. д.
Во всяком случае, это дало те же результаты :( Сплошной объект, теперь построенный из 4 линий, имеет только 2 рабочие линии, верхнюю и левую. Правая и нижняя не работают вообще. Кто-нибудь знает, почему это происходит и как я могу это исправить?
Что касается игрового движка/фреймворка, я использую открытые фреймворки, но по сути весь код здесь мой, кроме функции обнаружения линий и некоторых обертка

Подробнее здесь: https://stackoverflow.com/questions/798 ... -detection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»