Более точное столкновение на основе плитки - PullRequest
1 голос
/ 15 мая 2011

Во-первых, игрок будет управлять круглым объектом. Я пытаюсь сделать столкновение в игре на основе плитки. Одна из моих проблем - не все плитки квадратные. Все они имеют неправильную форму. То, как я думал об этом, было сделать 2 проверки; 1) проверьте, находится ли игрок в пределах досягаемости плитки 2) проверить (как-то), действительно ли они соприкасались с плиткой

Как бы я это сделал? Или есть лучший способ? Я использую C # / XNA (вероятно, не важно)

Ответы [ 4 ]

1 голос
/ 15 мая 2011

Вы можете сначала проверить прямоугольное столкновение , и если есть проверка столкновения для столкновения на пиксель .

Эти две ссылки действительно хороши и являются довольно хорошим введением в базовое обнаружение столкновений с помощью XNA.

1 голос
/ 15 мая 2011

Есть несколько способов справиться с этим.Лично я бы отслеживал все встречные объекты в списке.Если будет много объектов (более 200), вы можете сохранить несколько списков.Каждый список будет представлять четверть или восьмую часть экрана.При каждом обновлении вы можете просматривать списки и проверять наличие объектов (перекрытие плиток).Если плитки перекрываются, вы должны проверить Pixel Perfect Collisions .

0 голосов
/ 16 мая 2011

Я планирую создать следующее решение для моего следующего проекта:

  1. Каждый GameObject в моей игре будет иметь поле CollisionRectangle.
  2. Создайте CompositeRectangle объект, который будет состоять из нескольких прямоугольников. Плюсом этого является то, что (по крайней мере, в моем случае) его можно создать с помощью процессора Content Pipeline во время сборки, получить мой CollisionRectangle бесплатно и, как обычно, проверить его, вызвав .Collides (...)
0 голосов
/ 15 мая 2011

Я бы порекомендовал использовать физический движок. Вы можете найти учебники и документацию для каждого из них на своих сайтах или с помощью поиска Google. Вот некоторые физические движки XNA:

  1. Физика Farseer
  2. JigLibX
  3. PhisiXNA (Я только что нашел это в поиске Google и не могу ручаться за это, но два других очень хорошо используются в сообществе XNA)
...