Conseguir que uma nuvem 2D de "pixels" siga um mouse


10

Estou trabalhando em um jogo 2D tentando obter uma "nuvem" de algumas centenas de cubos ou discos minúsculos para seguir o cursor do mouse sem se sobrepor.

No entanto, o uso do mecanismo de física introduz lentidão no desempenho à medida que o número de discos aumenta e a detecção de colisões geralmente é instável.

Existe uma maneira fácil de otimizar o mecanismo para esse tipo de coisa? Caso contrário, eu estaria melhor apenas desligando o motor e escrevendo algo próprio? (Segurando os canudos aqui, mas :) Existem bons recursos ou exemplos de como fazer isso?

Respostas:


13

Sim, usar um mecanismo de física para isso seria um pouco exagerado. Eu sugiro que você implemente um algoritmo de flocagem. Os princípios básicos são:

  • Separação: Dirija para evitar aglomerar companheiros de rebanho locais

  • Alinhamento: Direcione para a posição média dos companheiros de bando locais

  • Coesão: siga para a posição média dos companheiros de bando locais

Você pode vê-lo em ação aqui e obter alguns detalhes sobre sua implementação . Você fará alguns pequenos ajustes para incluir a aplicação de uma força em direção ao ponteiro do mouse.


1
Você pode usar uma grade dinâmica virtual ou outro particionamento espacial para tornar o flocagem eficiente se você tiver muitos boids que também não pode processar ingenuamente. Muitas maneiras de otimizar.
Sean Middleditch 21/02
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.