Убедиться, что два объекта не перекрываются ⇐ C++
-
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--; } } } Я не могу придумать ничего другого, как это исправить, я пробовал использовать кучу коллайдеров, но это было очень глючно.
Я создал этот фрагмент кода, который гарантирует, что два объекта не могут перекрываться, но он очень многословен и имеет 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--; } } } Я не могу придумать ничего другого, как это исправить, я пробовал использовать кучу коллайдеров, но это было очень глючно.
Мобильная версия