[Android gamedev]Как избежать больших задержек при обработке коллизий(столкновений)?
Есть объект которым управляет игрок - 1 штука. Препятствия - около 60-70 штук. Печеньки - около 40-50 штук на уровень. И злобные объекты (от которых надо спасаться) - штук 10.
Проблемы начались уже на этапе обработки движения главного героя. Сначала проверка на коллизии при движении по горизонтали, а потом еще раз такая же проверка для движения по вертикали. А потом еще одна проверка на съеденные печеньки. Результат, видны задержки при движении ГГ. Боюсь, что все станет колом, когда добавлю движение злобных объектов.
Вопрос, как можно решить проблему с обработкой большого количества коллизий?
З.Ы.Ж. Ну или хотя киньте ссылку, из которой можно почерпнуть толковую информацию.
Попробуйте уменьшить fps, что бы добиться оптимального баланса между задержкой между кадрами и плавностью движения. Ведь чем меньше fps, тем быстрее работает ваша игра))
1) LibGdx + Java
2) прямой перебор всех объектов с проверкой на пересечение прямоугольников.
1. Сдвиг тестового прямоугольника по горизонтали.
2. Проверка столкновений
3. Сдвиг тестового прямоугольник по вертикали
4. Проверка столкновений
5. (На данной этапе монстры не проверяются)
6. Проверка столкновений с печеньками
3) профайлером не гонял. изначально ситуация не нравиться. чуйка чует, что текущее решение тормозное.
особенно если добавлять движение монстров, то получается надо добавлять цикле пункты с 1-5. Вот и опасение, что если я так сделаю в лоб все совсем остановиться.
Satangelus, Смотрите, вариантов мульен. Начните с того, что не делайте перебор всех объектов. Можно разбивать на зоны, можно отсортировать и отсекать. Кстати считайте еще и квадратичное расстояние - без корня. А еще можно проверять не прямоугольники, а круги - дешевле.
Это так, очень быстрый ответ. Советую начать с профайлера.