Domanda

Ho un corpo in movimento veloce (A), che è dinamica. Si suppone a collidere con un altro corpo (B). A scontra con B, ma a volte passa il corpo B senza collisioni. Questo è un comportamento del tutto casuale. Devo avere quel collisione. guida gentilmente il motivo per cui si comporta in questo modo, in modo casuale.

È stato utile?

Soluzione

L'effetto di un oggetto che passa attraverso un altro a causa di vasto movimento in un singolo passo temporale è chiamato tunneling .

Box2D utilizza continuo di rilevazione Collisione tra dinamica e static oggetti per risolvere questo problema. Tuttavia, il vostro caso (dinamico V.S. dinamica) non viene gestito automaticamente, quindi è solo un dado a caso gettano se i vostri oggetti capita di essere in collisione posizioni nel momento esatto le collisioni vengono valutati.

Box2d Manuale :

normalmente CCD non viene utilizzato tra corpi dinamici. Questo viene fatto per mantenere prestazioni ragionevoli. In alcuni scenari di gioco è necessario corpi dinamici da usare CCD. Ad esempio, si può decidere di sparare un proiettile ad alta velocità a una pila di mattoni dinamici. Senza CCD, il tunnel potrebbe proiettile attraverso i mattoni.

oggetti in movimento veloce nel Box2D può essere etichettato come proiettili. proiettili eseguire CCD con sia statiche che dinamiche corpi. Si dovrebbe decidere cosa organismi dovrebbero essere proiettili, sulla base di game design. Se si decide un corpo deve essere trattato come un proiettile, utilizzare l'impostazione seguente.

bodyDef.bullet = true;

La bandiera proiettile colpisce solo i corpi dinamici.

Box2D esegue collisione continuo in sequenza, in modo da proiettili possono perdere corpi in rapido movimento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top