Поворот спрайта и проблема пересечения с другими объектами

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Поворот спрайта и проблема пересечения с другими объектами

В этой теме 4 ответа, 2 участника, последнее обновление Павел Букреев Павел Букреев 2 года/лет, 11 мес. назад.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #1965
    Entey
    Entey
    Участник
    Сообщений:3

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

    Репутация:1

    Пишу игру с летающим объектом вид сверху. Самолёт летит и поворачивается в разные стороны (урок №17-18). Возникла проблема пересечения с другими объектами. Когда летит вверх, коллизии отображаются адекватно, но когда начинаешь поворачивать пули пролетают сквозь спрайт и пересекаются где-то позади него. Я так понял или смещается центр, или(хотя это маловероятно) программа не успевает зафиксировать позицию объекта в данный момент и делает пересечения в том месте где был спрайт.

    Задано  sprite.setOrigin(w/2, h/2); sprite.setRotate(angle);

    Может быть кто-то сталкивался с такой проблемой?

    #1971
    +2
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:586

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

    Репутация:104

    нужно проверить стековку setOrigin(пополам)  и setPosition (пополам)

    #1998
    Entey
    Entey
    Участник
    Сообщений:3

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

    Репутация:1

    Спасибо за ответ. В принципе, все работает более-менее нормально, но иногда все-таки пролетает мимо, или неадекватно попадает.

    В процессе исправления этого бага, возникла идея вместо спрайта(поскольку он у меня больше напоминает треугольник) использовать два пересекающихся прямоугольника sf::RectangleShape. Но теперь возникла проблема с функцией пересечения с остальными объектами. RectangleShape взят из-за того, что его можно вращать и изменять размер.

    Фрагмент кода:

    getRect() – возвращает FloatRect спрайта пули

    body1 и body2 – это sf::RectangleShape

    ??? – это для наглядности вопроса

     

    Вопрос: есть ли какая-то функция пересечения объектов типа FloatRect и RectangleShape?

    #2000
    +1
    Entey
    Entey
    Участник
    Сообщений:3

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

    Репутация:1

    “Это же элементарно, Ватсон!”  hero.body1.getGlobalBounds(), не поставил скобки и весь вечер изобретал велосипеды…

    #2003
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:586

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

    Репутация:104

    как я рад, что бегло случайно прочитал следующий пост. а то бы тоже весь вечер изобретал )))

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)

Для ответа в этой теме необходимо авторизоваться.