3
\$\begingroup\$

I'm using Jitter Physics to create a game. For testing, I have ball (a spherical rigid body) falling onto a small box-like mesh. The problem is that the ball falls straight through the floor, even though the collision seems to be detected properly.

Ball (spherical rigid body) falling onto a custom mesh.

The mesh's rigid body is created using a triangle mesh shape. In the code below, model is the floor's 3D model

Octree octree = PhysicsUtilities.ExtractOctree(model);
octree.BuildOctree();

Body body = new RigidBody(new TriangleMeshShape(octree));
body.IsStatic = true;

The PhysicsUtilities.ExtractOctree function extracts vertices from the 3D model in order to create the rigid body. As far as I can tell, that function is working correctly (i.e. all vertices and indices look correct). To check if the collision was detected, I added a callback function as follows.

CollisionSystem collisionSystem = new CollisionSystemSAP();
collisionSystem.CollisionDetected += OnCollisionDetected;

World world = new World(collisionSystem);

The ball-floor collision is detected and everything about the collision looks correct. I've even tried changing values in world.ContactSettings, but nothing worked.

Has anyone else experienced this problem? I've tried everything I can and Jitter's documentation is pretty low.

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Collision detection has very little to do with collision response, besides triggering it.

Check your settings for both bodies, and the settings for the physics system:

  1. Collision callbacks: Is there a collision behaviour for each body?
  2. Body density: if density is too low, objects float through each other.
  3. Mass: physics needs this to compute kinematic response and normal forces. make sure the value is set.
\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .