Ответ в теме: Смещение взаимодействия с объектами

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Смещение взаимодействия с объектами Ответ в теме: Смещение взаимодействия с объектами

#5001

lexpartizan
Участник
Сообщений:10

Зарегистрирован:
04.06.2018

Репутация:2

Проблема со смещением в спрайте всё же в самом спрайте персонажа. И Tiled Map Editor эту проблему принципиально не решает.

1. Коллизия (столкновение) определяется через пересечение прямоугольника (IntRect) спрайта персонажа с объектом в Tiled Map Editore. В Tiled Map Editore можно настроить довольно точно, так как там объекты не анимированные и вообще квадратные. С ним проблем нет.

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

2. Как проверить так ли это? Легко. Залить каким-нибудь цветом тайлсет персонажа, чтобы он не был прозрачным в игре. Теперь ты увидишь персонажа в цветном квадрате его реального размера. И сможешь проверить, совпадает ли взаимодействие(коллизия) с его реальными размерами.

3. Есть урок на ютубе по ищется по запросу “SFML платформер”, там для загрузки спрайтлиста персонажа используется sprite decomposer. И там можно подогнать прямоугольники более точно.

Но возникает другая проблема. Так как координаты прямоугольника это левый верхний угол, то, например, приседающий персонаж на самом деле подтягивает ноги, а башка его остаётся на том же уровне. Так как сам размер прямоугольника уменьшается, а координаты ху всё те же.

Красивого и рабочего решения я не знаю.

Но виноват однозначно размер спрайта персонажа. Точнее его текущий прямоугольник. Залей цветом тайлсет персонажа и убедишься.