Code: Select all
playerGhostObject = new GhostObject();
playerGhostObject.setCollisionShape(playerShape);
playerGhostObject.setCollisionFlags(CollisionFlags.CHARACTER_OBJECT);
dynamicsWorld.addCollisionObject(playerGhostObject,(short)(0x04),(short)(0x01 | 0x02));
dynamicsWorld.addRigidBody(playerRigidBody,(short)(0x05),(short)(0x01 | 0x02));
dynamicsWorld.getPairCache().setInternalGhostPairCallback(new GhostPairCallback());//needed
Code: Select all
//player movement
dynamicsWorld.setInternalTickCallback(new InternalTickCallback(){
@Override
public void internalTick(DynamicsWorld world, float timeStep){
playerRigidBody.setLinearVelocity(new Vector3f(Inputs.playerX_Velocity,playerRigidBody.getLinearVelocity(new Vector3f()).y,0));//z axis locked for side scroller
playerGhostObject.setWorldTransform(playerRigidBody.getWorldTransform(new Transform()));
}
}, dynamicsWorld.getWorldUserInfo());