Обнаружение столкновений XNA в Platformer - PullRequest
4 голосов
/ 04 июля 2011

Я работал над простым 2D-платформерным движком.Пока что у меня есть движущийся спрайт (еще не анимированный) и 3 платформы для игры типа «Jetpac» (старая игра ZX Spectrum - я уверен, что если вы засканируете ее в Google, вы можете играть в нее во флэш-боксе).

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

У меня есть ограничивающие рамки для всех платформ, а также для персонажа, и позже будут ограничивающие рамки для вражеских спрайтов, но это можно будет обработать позже.В принципе, какой самый простой способ разрешить спрайту проходить по платформе, а не проходить через него с помощью Bounding Box?

Немного больше информации:

  • Класс символов управляет рисованиемспрайт и обновление спрайта с использованием переменной положения Vector2, обновляемой переменной движения Vector2.
  • Класс Platform управляет отрисовкой платформ (их 3), поэтому plat1, plat2 и plat3 являются всеми типамиПлатформа.
  • Платформы должны быть полностью прочными со всех сторон, но позволять спрайту ходить.

Любая помощь?

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Основы простого обнаружения столкновений с прямоугольниками:

Используйте прямоугольную структуру для ограничивающих рамок.Затем вы можете использовать метод пересечений для сравнения ограничивающих рамок вашей платформы с ограничивающей рамкой вашего персонажа.

Основы для поддержания производительности:

Если выиметь большие уровни с большим количеством платформ, ваша игра может стать медленной, если вы сравните все свои платформы с персонажем.Вы можете, например, использовать метод выравнивания по оси , чтобы избежать этого.Основой AABB является то, что вы сортируете свои ограничивающие рамки вдоль осей x и y и, следовательно, получите приблизительное местоположение BB.

Последнее, но не менее важное:

Посмотрите учебник по платформеру .

0 голосов
/ 05 июля 2011

Рассматривали ли вы вариант использования физического движка в вашей игре? Для простого платформера это может быть излишним, но вы можете легко добавить дополнительные физические эффекты.

2D физические движки, которые я могу посоветовать вам изучить:

  • Box2D, который имеет собственный порт XNA (см. здесь )
  • Бурундук, который когда-то имел порт для XNA, но, похоже, пропал без вести.
...