Сверху вниз обработка столкновений спрайтов с движущимися спрайтами? - PullRequest
0 голосов
/ 01 февраля 2012

Я делаю простую 2D-игру сверху вниз на c # с xna 4.0 и использую метод обнаружения столкновений AABB.Я определенно новичок в программировании, поэтому я прошу прощения, если этот вопрос очень простой.

Я хочу, чтобы несколько врагов двинулись к игроку, чтобы напасть на него, но всякий раз, когда я добавляю больше одного, мне очень трудно управлять столкновением и обработкой между ними всеми.Как мне управлять простым столкновением прямоугольника и пересечения, которое я использую?Я пытался установить врагов в их прежнее положение, если столкновение вернулось, но это сделало много интересного.

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Предыдущая позиция обычно не работает лучше всего при работе с несколькими, потому что даже «предыдущая позиция» может стать недействительной.

Вместо этого вы можете рассмотреть толкание объекта с пути сталкивающегося объекта.

Эта статья на OpenTK, которая не основана на XNA, но чертовски похожа, ее легко адаптировать:

http://www.opentk.com/node/869

Требуется минимальный перевод, необходимый для того, чтобы вытолкнуть AABB из пути другого AABB. Это должно быть сделано за несколько проходов, чтобы убедиться, что никакие два объекта не сталкиваются. Однако, технически, если вы уже сделали Player, например, вам не нужно проверять врагов против игрока. Вместо этого вы можете обрабатывать это более обобщенно, используя алгоритм, который обрабатывает все ваши AABB, которые необходимо сравнить, и знает, какие из них уже сравнивались. Эта часть может прийти в стадии оптимизации.

Будьте внимательны к порядку; это где ваш контроль приоритета столкновений вступает в игру. Когда AABB вашего игрока сталкивается с другим, вы бы предпочли, чтобы ваш игрок получил «толчок» ПЕРВЫМ или противник? Эти детали могут зависеть от вашей реализации.

0 голосов
/ 02 февраля 2012

Почему бы не использовать Farseer Physics Engine, который автоматически обрабатывает столкновения (и другую физику)?Farseer Physics Engine - это система обнаружения столкновений с реалистичными физическими реакциями.

Farseer может справиться с любым столкновением, и вы можете сосредоточиться на своем игровом дизайне!(Не изобретайте велосипед:)

Это проект с открытым исходным кодом, широко используемый!Есть много образцов

Вы можете скачать с http://farseerphysics.codeplex.com/

...