come ignorare la collisione fisica di alcuni oggetti in box2d


8

So che sembra sciocco, ma vorrei che alcuni oggetti seguissero la fisica, mentre altri non si scontrano.

Ho cercato di raggiungerli stabilendo la loro posizione esclusivamente. Ma poi ignorerà tutta la fisica.

Ciò che sto cercando di fare è anche possibile?


Non sono sicuro di ciò che vuoi ottenere, ma anche i corpi cinematici potrebbero aiutare.
ThatOneGuy,

Risposte:


11

Leggi il filtro delle collisioni nel manuale Box2D:

Il filtro delle collisioni consente di prevenire le collisioni tra i dispositivi. Ad esempio, supponi di creare un personaggio che va in bicicletta. Vuoi che la bicicletta si scontri con il terreno e il personaggio si scontri con il terreno, ma non vuoi che il personaggio si scontri con la bicicletta (perché devono sovrapporsi). Box2D supporta tale filtro delle collisioni utilizzando categorie e gruppi.

Box2D supporta 16 categorie di collisione. Per ogni apparecchio è possibile specificare a quale categoria appartiene. Specificare anche con quali altre categorie questo apparecchio può scontrarsi. Ad esempio, potresti specificare in una partita multiplayer che tutti i giocatori non si scontrano tra loro e i mostri non si scontrano tra loro, ma i giocatori e i mostri dovrebbero scontrarsi

Link al manuale qui . (Cerca filtri).


2

Se hai due tipi di oggetti che non dovrebbero scontrarsi con un altro, allora funziona quanto segue.

var kindA = -1;
var kindB = -2;

var bodyDef = new b2BodyDef();
var body = world.CreateBody(bodyDef);
var fixtureDef = new b2FixtureDef();
fixtureDef.shape = new b2Shape();
fixtureDef.filter.groupIndex =
    entity instanceof EntityA
        ? kindA
        : kindB;
body.CreateFixture(fixture);
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.