Отримання 2D-піксельної хмари для слідування за мишкою


10

Я працюю над 2D грою, намагаючись отримати "хмару" з кількох сотень крихітних кубів або дисків, щоб слідкувати за курсором миші, не перекриваючи один одного.

Однак використання двигуна фізики вводить млявість продуктивності, оскільки кількість дисків зростає, і виявлення зіткнення, як правило, неприємне.

Чи існує простий спосіб оптимізувати двигун для подібних речей? Якщо ні, то мені було б краще просто вимкнути двигун і написати щось своє? (Зчепившись соломкою тут, але :) Чи є хороші ресурси чи приклади, як це зробити?

Відповіді:


13

Так, використання двигуна фізики для цього буде трохи зайвим. Я пропоную вам реалізувати алгоритм стікання. Основами якої є:

  • Розділення: Направляйте, щоб уникнути скупчення місцевих фетів

  • Вирівнювання: спрямовуйте до середнього заголовку місцевих флокметів

  • Згуртованість: Напряміть рухатися до середнього положення місцевих флокметів

Ви можете побачити його в дії тут і отримати детальну інформацію про його реалізацію . Ви зробите невелике налаштування, щоб застосувати силу до покажчика миші.


1
Ви використовуєте віртуальну динамічну сітку або інший просторовий розподіл, щоб зробити стекання ефективними, якщо у вас є багато боїдів, які ви також не можете наївно обробити. Безліч способів оптимізації.
Шон Міддлічч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.