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.