В моей игре класс ObjectManager управляет всеми объектами моей игры и содержит список объектов.
и я использую инструкцию 2, когда я проверяю столкновение каждого объекта.Как оптимизировать проверку столкновений объектов в играх?
for(int i = 0; i < objectnum; ++i)
{
for(int j = 0; j < objectnum; ++j)
{
AABB_CollisionCheck()
}
}
но если предметов в игре много, FPS становится ниже. (80 объектов == 40 кадров) возможно, это связано с тем, что мой метод проверки столкновений неэффективен. (если объект Num равен п, то мой метод работает п^2 раза)
- вы можете дать мне несколько советов по поводу этого столкновения Проверки по оптимизации,
Я хочу уменьшить цикл for для проверки каждого столкновения объектов.
- Что нового в использовании функции обратного вызова или нет? для проверки на столкновение. Есть ли какие-либо приключения скорости работы по поводу обратного вызова?
p.s Большое спасибо за прочитать мой вопрос. и, пожалуйста, простите за мой английский мастерство ...
Вы не должны проверить, сталкивается ли B с A, если вы уже проверили, сталкивается ли с В. – Blutkoete
возможный дубликат [Что метод следует использовать для prune 2d collision проверит?] (http://stackoverflow.com/questions/414553/what-technique-should-be-used-to-prune-2d-collision-checks) – slaphappy
Наиболее очевидным улучшением будет запуск второго цикла от 'i + 1'.После этого вы, вероятно, захотите взглянуть на код столкновения, а когда это не поможет, - какую-то схему разделения пространства. Профилировщик - хорошая помощь. – molbdnilo