2014-04-13 1 views
0

저는 Box2D를 libgdx와 함께 사용하고 있습니다. 기본 충돌 동작에 문제가 있습니다. 점프하거나 물건의 상단을 칠 때, 모든 것이 잘 작동합니다. 내 물건이 붙어 있지 않아. 그것이 정상에 부딪 치면, 그 위에 서 있습니다. 바닥에 닿으면 다시 떨어집니다. 그러나 그것이 양쪽면 중 하나를 치면, 그 방향으로 움직이는 한, 내 물건이 붙어 있습니다. 즉, 블록/벽의 측면과 충돌하는 동안 중력은 아무런 영향을 미치지 않습니다. 나는 약간의 연구를했지만, 모든 솔루션은 libgdx와 함께 사용할 수없는 b2Settings를 사용한다고 말했습니다. 이 문제를 해결할 수있는 방법이 있습니까?Box2D - 객체의 측면에 달라 붙는 문자

level.character.body.setLinearVelocity(
         -level.character.terminalVelocity.x, 
         level.character.body.getLinearVelocity().y); 

여기 그림입니다 다음과 같이 (우 이동) 내 캐릭터를 이동하는 데 사용하는 코드입니다. 보시다시피, 떨어지는 대신 벽돌에 붙어 있습니다. (내 캐릭터가 현재 동전입니다 : P) 대신 SetLinearVelocity를 사용

Sticking to the wall

답변

1

, 주위에 물건을 이동 ApplyForce 또는 ApplyImpulse를 사용해보십시오. 문제는 SetLinearVelocity를 사용하면 비현실적인 상황을 만들 수 있습니다. 예를 들어 볼이 벽에 닿아 수평 속도가 실제로 0이되어야하지만이 경우에는 자연 결과를 무시하고 볼이 멈추지 않는다고 말합니다 그리고 그것은 여전히 ​​움직이고 있습니다.

ForceForce가 충분히 강하고 설비물 사이에 충분한 마찰이있는 경우에도 (실제 세계와 마찬가지로 벽에 무언가를 충분히 밀어 붙이는 경우) ApplyForce 또는 ApplyImpulse를 사용할 때도이 문제가 계속 발생할 수 있습니다. 그리고 표면이 너무 미끄 럽지 않다면, 떨어지는 것을 막을 수 있습니다.)

+0

고마워요! 말이된다. 나는 움직임에 대한 의견을 다시 쓰고 어떻게 효과가 있었는지 알려줄 것이다. :) – user2082169