Я изучаю SFML прямо сейчас, и мне только что удалось реализовать некоторые основные прыжки и гравитацию. Тем не менее, я не могу понять, как создавать столкновения, потому что мне нужно также определить, на какую сторону объекта наносится удар. Например, мне нужно движение вверх, чтобы остановиться, если он достигнет нижней части объекта, движение вниз, чтобы остановиться, если он достигнет верхней части, и движение влево или вправо, если он только коснется стороны. Это были бы просто прямоугольные объекты, поэтому мне не пришлось бы программировать странные круги или неестественные формы, только 4 стороны. Спасибо!
Есть несколько различных способов сделать это, некоторые более сложные (и эффективные), чем другие. Ради вас, я бы начал с того, что просто поместил «ограничивающую рамку» вокруг вашего персонажа. Эта ограничительная рамка будет перемещаться везде, куда движется ваш персонаж, и должна окружать его или ее. Всякий раз, когда этот ограничивающий прямоугольник пересекается с твердым объектом, происходит ваше столкновение.
Вот где веселье приходит:
Это чрезвычайно упрощенное объяснение. Обнаружение и устранение столкновений затруднено. Ваш лучший выбор — тратить много времени на обнаружение столкновения потом беспокоиться о том, как справиться столкновение. Многие начинающие пробуют это одновременно и расстраиваются.
Других решений пока нет …