Обнаружение столкновений для прямоугольников произвольного размера, расположенных и повернутых в XNA - PullRequest
2 голосов
/ 11 апреля 2010

Я работаю с xna в C #, и в моей игре у меня будет множество космических кораблей, летающих повсюду. У каждого из них будет произвольное вращение, размер и положение в пространстве, и мне нужен метод, чтобы определить, когда они сталкиваются. В идеале метод должен принимать два прямоугольника, два двойных и два вектора Vector2 для размера, поворота и положения соответственно и возвращать логическое значение, которое указывает, пересеклись они или нет.

Ответы [ 3 ]

3 голосов
/ 12 апреля 2010

Посмотрите эти ссылки:

Обзор обнаружения столкновений
Матрицы обнаружения столкновений
Практическое применение обнаружения столкновений

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

2 голосов
/ 12 апреля 2010

Вы также можете рассмотреть возможность использования готового решения для этого и интеграции чего-то вроде Farseer Physics Engine:
http://farseerphysics.codeplex.com/

1 голос
/ 11 апреля 2010

Эти прямоугольники, которые вы описываете, называются OBB (Oriented Bounding Boxs)

Способ столкновения между ними заключается в использовании "теоремы о разделяющей оси"

Очень хорошая страница с подробным описанием и множеством картинок можно найти здесь

...