Domanda

Sto usando Box2D (la versione AS3 / Flash, se è importante) e sto provando a calcolare quanto peso trasporta ogni corpo.

So iterare attraverso tutti i corpi e so come eseguire il polling delle routine di rilevamento delle collisioni, ma sembra che le forze di collisione muoiano a zero una volta applicato il peso. Esiste una sorta di "forza statica totale" proprietà che sto trascurando?

È stato utile?

Soluzione

Usando il tipo contactResult nell'oggetto contactListener opzionale, puoi eseguire il polling della normalForce di ciascun elemento per scoprire quali forze (che comprendono intrinsecamente il peso) vengono applicate agli oggetti.

Si noti che i corpi dormienti (ad esempio uno stack di riposo) non attiveranno i risultati del contatto, ma dovrebbero funzionare bene se si disattiva il sonno o se si desidera misurare le forze solo mentre si sta verificando il movimento.

Per informazioni su come implementare la classe contactListener, consultare la documentazione.

Altri suggerimenti

È da un po 'che non gioco con Box2D ma hai provato a effettuare il polling GetReactionForce () sulle cose di interesse?

So che quando ho fatto una simulazione del ponte e volevo che il ponte si spezzasse in base al peso su di esso, ho eseguito il polling GetReactionForce () e se era al di sopra di una certa soglia, ho eliminato il giunto che collega i due corpi.

Penso che tutto ciò che devi fare sia scorrere le tue istanze di b2Body e usare metodo GetMass ().

Non sono sicuro di cosa intendi per "forza statica totale".

Per quanto riguarda il peso / massa, penso che lo applichi prima di qualsiasi collisione, quando crei il corpo, impostalo tu stesso utilizzando setMass (); o chiedi a box2d di stimare una massa in base alla forma, usando Metodo SetMassFromShapes ().

hth

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