25 600 движущихся спрайтов

161
06 октября 2021, 22:10

Постановка задачи: Нам нужно создать сетку из спрайтов 160х160. Каждый спрайт движется в рандомном направлении и с рандомной скоростью. При столкновении друг с другом спрайт исчезает и появляется через секунду, где то за экраном. Нужно что бы это все работало при 30-60 фпс.

Мое решение: В скрипте Spawner у меня 3 листа со скоростью, направлением и риджидбоди2д. В старте я создаю спрайты ставлю их по сетку в двойном цикле, тут же рандомлю скорость и направление и вместе с риджидбоди2д добавляю их в списки. В методе FixedUpdate я прохожу циклом по всем элементам списка риджидбоди2д и даю каждому его направление и скорость. На спрайте висит скрипт, который отслеживает столкновение через OnTriggerEnter2D и вызывает из Spawner метод, в котором этот спрайт выключается, перемещается за экран и там снова активируется и продолжает движение. Я смог добиться 20 фпс при 120х120 спрайтах.

Вопрос: Какие методы оптимизаций еще можно применить? Ps: Я читал про ECS & Job System помогут ли они мне в этом случае ведь я использую передвижение через риджидбоди, а не трансформ. Если да то не могли бы вы показать на легком примере, как это должно выглядеть.

Спасибо.

Answer 1
  1. Все спрайты должны быть в одном атласе. 2. Забыть про использовании физики 2д тел (Для 25тыс тел это чистой воды экстримизм !!!). Но считая всё математически можно сделать лишь хуже, тут нужно быть аккуратным!
READ ALSO
Как вывести GIF-Изображение по нажатию button

Как вывести GIF-Изображение по нажатию button

Делаю развивающую игру для ребенкаНужно что бы при нажатии на обычную кнопку которая находится на форме, появлялась картинка в виде GIF анимации...

297
Регистрация и авторизация в asp.net Core + Angular 8

Регистрация и авторизация в asp.net Core + Angular 8

вот уже добрые 5 дней мучаюсь и не могу найти руководство по авторизации в коре и онгуляреЕсло в коре я создаю все как надо, то когда дело доходит...

178
Объясните смысл данного участка кода

Объясните смысл данного участка кода

Unity добавили новый Package в их Package manager под названием Game FoundationЯ захотел его изучить и наткнулся на интересный момент, который я не знаю

253