Ottenere un cloud "pixel" 2D per seguire un mouse


10

Sto lavorando a un gioco 2D cercando di ottenere una "nuvola" di alcune centinaia di piccoli cubi o dischi per seguire il cursore del mouse senza sovrapporsi.

Tuttavia, l'utilizzo del motore fisico introduce una riduzione delle prestazioni man mano che aumenta il numero di dischi e il rilevamento delle collisioni è generalmente instabile.

C'è un modo semplice per ottimizzare il motore per questo tipo di cose? In caso contrario, starei meglio spegnendo il motore e scrivendo qualcosa di mio? (Stringendo a cannucce qui, ma :) Ci sono buone risorse o esempi su come farlo?

Risposte:


13

Sì, usare un motore fisico per questo sarebbe un po 'eccessivo. Ti suggerisco di implementare un algoritmo di floccaggio. Le basi di cui sono:

  • Separazione: sterzare per evitare affollati compagni di gregge locali

  • Allineamento: orientati verso la rotta media dei compagni di gregge locali

  • Coesione: sterzare per spostarsi verso la posizione media dei compagni di gregge locali

Puoi vederlo in azione qui e ottenere alcuni dettagli sulla sua implementazione . Farai alcune piccole modifiche per includere l'applicazione di una forza verso il puntatore del mouse.


1
Puoi usare una griglia dinamica virtuale o altri partizionamenti spaziali per rendere efficiente il floccaggio se hai molti boids che non puoi elaborare in modo ingenuo. Tanti modi per ottimizzare.
Sean Middleditch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.