Obtener una nube 2D de "píxeles" para seguir a un mouse


10

Estoy trabajando en un juego 2D tratando de obtener una "nube" de unos cientos de cubos o discos pequeños para seguir el cursor de mi mouse sin superponerse entre sí.

Sin embargo, el uso del motor de física introduce una lentitud en el rendimiento a medida que aumenta el número de discos y la detección de colisión es generalmente inestable.

¿Hay una manera fácil de optimizar el motor para este tipo de cosas? Si no, ¿estaría mejor simplemente apagando el motor y escribiendo algo propio? (Agarrando pajitas aquí, pero :) ¿Hay algún buen recurso o ejemplos sobre cómo hacer esto?

Respuestas:


13

Sí, usar un motor de física para eso sería un poco exagerado. Le sugiero que implemente un algoritmo de flocado. Los conceptos básicos son:

  • Separación: evite abarrotar a los compañeros locales

  • Alineación: Diríjase hacia el rumbo promedio de los compañeros locales.

  • Cohesión: dirigir para avanzar hacia la posición promedio de los compañeros locales

Puede verlo en acción aquí y obtener algunos detalles sobre su implementación . Hará algunos ajustes menores para incluir la aplicación de una fuerza hacia el puntero del mouse.


1
Puede utilizar una cuadrícula dinámica virtual u otra partición espacial para hacer que el agrupamiento sea eficiente si tiene muchos boids que no puede procesar ingenuamente también. Muchas formas de optimizar.
— Sean Middleditch
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.