Убедиться, что два объекта не перекрываютсяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Убедиться, что два объекта не перекрываются

Сообщение Anonymous »


Я создал этот фрагмент кода, который гарантирует, что два объекта не могут перекрываться, но он очень многословен и имеет 4 цикла while, которые влияют на производительность игры. Как я могу это исправить?

void Level::UpdateCollisions() { bool сущностейOnFloor[entities.size()]; for(intentent = 0;entity dstRect) == SDL_TRUE) { if(entities[entity]->dstRect.y dstRect.y) { while(SDL_HasIntersection(&entities[entity]->dstRect,&entities[entity1]->dstRect) == SDL_TRUE) сущности[сущность]->dstRect.y--; сущностиOnFloor[сущность] = 1; } if(entities[entity]->dstRect.y > юридические лица[entity1]->dstRect.y) while(SDL_HasIntersection(&entities[entity]->dstRect,&entities[entity1]->dstRect) == SDL_TRUE) сущности[сущность]->dstRect.y++; if(entities[entity]->dstRect.x > юридические лица[entity1]->dstRect.x) while(SDL_HasIntersection(&entities[entity]->dstRect,&entities[entity1]->dstRect) == SDL_TRUE) сущности[сущность]->dstRect.x++; if(entities[entity]->dstRect.x dstRect.x) while(SDL_HasIntersection(&entities[entity]->dstRect,&entities[entity1]->dstRect) == SDL_TRUE) сущности[сущность]->dstRect.x--; } } } Я не могу придумать ничего другого, как это исправить, я пробовал использовать кучу коллайдеров, но это было очень глючно.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»