Как узнать пересекаются ли поверхности в SDL?

79
17 февраля 2022, 13:30

Я делаю игру, и мне нужно, чтобы один игровой объект не накладывался на другой. Есть ли функция в SDL, позволяющая определить пересечение поверхностей и если да, то какая? Или можно определить каким-то другим способом?
На данный момент делаю так: у меня есть класс для игрового объекта Subject. Все объекты класса содержатся в vector <Subject> subjects. В этом классе есть метод:

void Subject::move(SDL_Event event, vector <Subject> sub, int index)
{
for (int i = 0; i < sub.size(); i++)
    {
        if (i != index)
        {
            subject = sub[i].getSize();
            if (size.x + size.w + event.motion.xrel > subject.x &&
                size.x + event.motion.xrel< subject.x + subject.w &&
                size.y + size.w + event.motion.yrel>  subject.y &&
                size.y + event.motion.yrel < subject.y + subject.h)
            {
                state = false;
            }
        }
    }

Когда state становится false - объект столкнулся с другим. В main идёт цикл:

    for (int i = 0; i < subjects.size(); i++)
            {
                if (subjects[i].getState() == true)
                {
                    subjects[i].move(event, subjects, i);
                    subjects[i].render();
                }
            }

Но таким образом не работает, объект появляется на экране, а при передвижении пропадает. Поэтому я ищу более эффективное решение.

READ ALSO
Автогенерация кода в Qt

Автогенерация кода в Qt

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

92
Почему std::plus не является вызываемым?

Почему std::plus не является вызываемым?

Почему std::plus<int> не является вызываемым?

95
Подскажите исходник инсталятора на C/C++

Подскажите исходник инсталятора на C/C++

подскажите хороший инсталятор с открытым кодом на C\C++ буду очень благодарен!

94
Узнать тип параметра функции

Узнать тип параметра функции

У меня есть шаблонный параметр, принимающий вызываемый типКак узнать тип i-ого параметра этого функционального объекта/функции?

128