Pregunta

Estoy utilizando Box2D para un juego de arriba hacia abajo. La "tierra" es una serie de azulejos, donde cada baldosa es un cuerpo estático con una forma de sensor. ¿Puedo hacer fricción en vigor para esto, a pesar de que los objetos no son realmente "chocan" con el suelo?

Si Box2D no me deja hacer esto, he considerado tratando de poner en práctica mi propia detectando qué fuerza se está moviendo actualmente el objeto, y aplicando una fuerza opuesta a ella, pero no estoy muy seguro de cómo detectar que la fuerza .

¿Fue útil?

Solución 3

ApplyImpulse() en lugar de ApplyForce() funciona mucho mejor.

Otros consejos

Otra forma de hacer esto es establecer linearDamping en su cuerpo. También podemos establecer esto de manera diferente dependiendo de la baldosa de su objeto está encendido.

fricción se dirige contra la velocidad del cuerpo, independientemente de otras fuerzas.

Si el ajuste lineal de amortiguación no es suficiente o depender de una propiedad de la b2Body es inadecuado, se puede calcular fácilmente las fuerzas de fricción no lineales y llamar ApplyLinearImpulse () o ApplyLinearForce () cada cuadro.

  • Consulta la velocidad con b2Body.GetLinearVelocity (), la escala (no lineal) el resultado como se desee para conseguir la fuerza, y invertido el signo de ambos componentes.

  • Si usted decide dejar el cuerpo (cuando es lo suficientemente lento para la barra), SetLinearVelocity () hace el truco, sin cálculos.

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