Pregunta

Estoy usando Box2D (la versión AS3 / Flash, si es importante) y estoy tratando de calcular cuánto peso lleva cada cuerpo.

Sé cómo recorrer en iteración todos los cuerpos, y sé cómo sondear las rutinas de detección de colisión, pero parece que las fuerzas de colisión mueren a cero una vez que se aplica el peso. ¿Hay algún tipo de "fuerza estática total"? propiedad que estoy mirando?

¿Fue útil?

Solución

Usando el tipo contactResult en el objeto opcional contactListener, puede sondear la fuerza normal de cada elemento para averiguar qué fuerzas (que intrínsecamente incluyen el peso) se están aplicando a los objetos.

Tenga en cuenta que los cuerpos dormidos (una pila en reposo, por ejemplo) no activarán los resultados de contacto, pero debería funcionar bien si apaga el sueño o si desea medir las fuerzas solo mientras se produce el movimiento.

Para obtener información sobre cómo implementar la clase contactListener, consulte la documentación.

Otros consejos

Ha pasado un tiempo desde que jugué con Box2D, pero ¿ha intentado sondear GetReactionForce () sobre las cosas de interés?

Sé que cuando hice una simulación de puente y quise que el puente se rompiera en función del peso que tenía, sondeé GetReactionForce () y si estaba por encima de cierto umbral, borraba la unión que conectaba los dos cuerpos.

Creo que todo lo que necesita hacer es recorrer sus instancias de b2Body y usar Método GetMass ().

No estoy seguro de qué quiere decir con "fuerza estática total".

En cuanto a peso / masa, creo que lo aplicas antes de cualquier colisión, cuando creas el cuerpo, configúrelo usted mismo usando setMass (); o haga que box2d calcule una masa basada en la forma, utilizando el Método SetMassFromShapes ().

hth

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top