This is how i set up my ghost object:
Code: Select all
CollisionShape ghostShape = new BoxShape(new Vector3f(0.2f,0.3f,0.2f));
ghostObject = new GhostObject();
ghostObject.setCollisionShape(ghostShape);
ghostObject.setWorldTransform(new Transform(new Matrix4f(
new Quat4f(0, 0, 0, 1),
new Vector3f(1000, 401, 1000), 1.0f)));
dynamicsWorld.addCollisionObject(ghostObject);
dynamicsWorld.getBroadphase().getOverlappingPairCache().setInternalGhostPairCallback(new GhostPairCallback());
dynamicsWorld.setInternalTickCallback(new InternalTickCallback() {
@Override
public void internalTick(DynamicsWorld world, float timeStep) {
for(int i=0;i<playerGhostObject.getNumOverlappingObjects();i++){
RigidBody body = (RigidBody) playerGhostObject.getOverlappingObject(i);
if(body.isKinematicObject()){
System.out.println("Game over!");
}
System.out.println("Collision");
}
}
}, this);
Tried both
Code: Select all
santa.setCollisionFlags(santa.getCollisionFlags() | CollisionFlags.KINEMATIC_OBJECT);
Code: Select all
santa.setCollisionFlags(CollisionFlags.KINEMATIC_OBJECT);