2013-04-09 3 views
0

내 게임, 특히 주 플레이어와 충돌을 구현하는 데 문제가 있습니다 (설정 한 상자와 충돌하면 훨씬 뒤쪽으로 튀어 오름). 이 설정에 대한 코드를 뷰어입니다 :JBullet RigidBodies

CollisionShape myCol = new CylinderShape(new javax.vecmath.Vector3f(0.4f, 0.9f, 0.4f)); 
    DefaultMotionState motion = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new javax.vecmath.Vector3f(0, 33, 0), 1f))); 
    javax.vecmath.Vector3f fallInertia = new javax.vecmath.Vector3f(0, 0, 0); 
    //myCol.calculateLocalInertia(0, fallInertia); 
    RigidBodyConstructionInfo cInfo = new RigidBodyConstructionInfo(1, motion, myCol, fallInertia); 
    self_Col = new RigidBody(cInfo); 
    self_Col.setFriction(1f); 
    self_Col.setRestitution(1f); 
    self_Col.setDamping(0.04f, 0.1f); 

그리고 이것은 물리학의 세계 설정입니다 :

AxisSweep3 pairCache = new AxisSweep3(new javax.vecmath.Vector3f(-10000, -10000, -10000), new javax.vecmath.Vector3f(10000, 10000, 10000)); 
    DefaultCollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration(); 
    CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration); 
    SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver(); 
    detectionWorld = new DiscreteDynamicsWorld(dispatcher, pairCache, solver, collisionConfiguration); 
    detectionWorld.setGravity(new javax.vecmath.Vector3f(0, -2f, 0)); 

내가 신청 한 후 플레이어를 이동하기 위해 애 쓰고 새로운 위치를 충돌 상자에 추가 한 다음 물리 단계를 수행하고 새 충돌 상자 위치로 위치를 설정하십시오. 그래서 기본적으로 나는 두 개의 벡터를 가지고 있습니다.

편집 : 아무나? 나는 여전히이 문제를 겪고 있습니다.

답변

0

JBullet은 흔히 0-1 단위를가집니다. 보상은 당신에게이 문제를 일으키는 원인이며, 보상은 충돌 모양이 얼마나 탄력적인지를 보여줍니다. 보상은 높습니다. 그것을 줄이고 도움이되는지 확인하십시오.

self_Col.setRestitution(0.1f);