Pergunta

Estou usando o Box2D para um jogo para cima. O "solo" é uma série de ladrilhos, onde cada ladrilho é um corpo estático com uma forma de sensor. Posso fazer o atrito entrar em vigor por isso, mesmo que os objetos não sejam realmente "colidindo" com o chão?

Se o Box2D não me deixar fazer isso, pensei em tentar implementar o meu, detectando o que a força está movendo atualmente o objeto e aplicando uma força oposta a ele, mas não sei ao certo como detectar essa força.

Foi útil?

Solução 3

ApplyImpulse() ao invés de ApplyForce() Funciona muito melhor.

Outras dicas

Outra maneira de fazer isso é definir linearDamping No seu corpo. Você pode definir isso de maneira diferente, dependendo do ladrilho que seu objeto está ativado.

O atrito é direcionado contra a velocidade do corpo, independentemente de outras forças.

Se a definição de amortecimento linear não for suficiente ou confiar em uma propriedade do corpo B2 for inadequada, você pode facilmente calcular forças de atrito não linear e chamar ApplLinEnuMimpulse () ou ApplyLinearforce () todos os quadros.

  • Consulte a velocidade com B2body.getLinearvelocity (), escala (não linearmente) o resultado, conforme desejado para obter a força, e inverta o sinal de ambos os componentes.

  • Se você decidir parar o corpo (quando é lento o suficiente para ficar), o SetLinearVELOCITY () faz o truque sem cálculos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top