Столкновение платформы SFML

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

2

Решение

Есть несколько различных способов сделать это, некоторые более сложные (и эффективные), чем другие. Ради вас, я бы начал с того, что просто поместил «ограничивающую рамку» вокруг вашего персонажа. Эта ограничительная рамка будет перемещаться везде, куда движется ваш персонаж, и должна окружать его или ее. Всякий раз, когда этот ограничивающий прямоугольник пересекается с твердым объектом, происходит ваше столкновение.

Вот где веселье приходит:

  1. Что значит «пересекается»? Много вещей. Вы можете написать функцию, чтобы узнать, пересекаются ли две фигуры, или использовать функцию из SFML, или использовать какую-то физическую библиотеку (например, Box2D).
  2. Как вы мешаете персонажу пройти? Выясните, как далеко они будут пересекаться (вы проверяете столкновение ДО того, как переместите персонажа), затем сделайте так, чтобы персонаж двигался только к границам этого твердого объекта.

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector