2010-03-14 5 views
2

현재 JME-Jbullet 물리 엔진을 사용하고 있고 지형에 문제가 있습니다.JME-Jbullet 물리학 문제

나는 2 개의 평면 박스를 가지고 있는데, 하나는 바닥에, 다른 하나는 경사로 역할을한다.

다음 코드로

:

Box slope = new Box("Slope", new Vector3f(0, -1, 0), 10f, 0f, 15f); 
PhysicsNode pSlope = new PhysicsNode(slope, CollisionShape.ShapeTypes.MESH); 
pSlope.setMass(0); 
pSlope.getLocalRotation().fromAngleNormalAxis(0.5f, new Vector3f(0, 0, -1)); 

를 회전이 적용되기 전에 다른 객체 위에 떨어 뜨리면, 박스 행위가 정상으로, 다음, 제대로 충돌이 문제는 다음과 같이이다. 그러나 회전 후에는 상자가 회전되지만 "Physics"는 변경되지 않으므로 램프가 나타나는 것처럼 보이는 개체를 바탕으로 개체를 놓으면 회전이 발생하지 않은 것처럼 동작합니다.

램프를 업데이트 할 수있는 방법이있어서 객체가 떨어졌을 때 슬라이드 다운됩니까?

감사합니다.

답변

1

update 메서드에서 물리 세계를 업데이트하는 것을 기억하고 계십니까? pSpacePhysicsSpace pSpace=PhysicsSpace.getPhysicsSpace();

0

문제에서 비롯

public void update(float tpf) { 
    super.update(tpf); 
    pSpace.update(tpf); 
} 

는 충돌 모양입니다. 메쉬는 충돌을 계산하는 데 매우 비싼 모양이며, JME에서 제대로 작동하지 않는 것을 알고있는 한. 상자 충돌 모양으로 바꾸면 문제가 해결됩니다.

javadocs에 나타난 바와 같이
0

:. (

getLocalTranslation() 세트) 물리 객체의 위치, 사용 setLocalTranslation()를 설정하지 않습니다, 동일 getLocalRotation()에 적용

나는 것 그 점을 고려하여 회전을 가져오고 제자리에서 수정하는 대신 pSlope.setLocalRotation(...)에 전화해야합니다.