google / liquidfun

2D physics engine for games

Home Page:http://google.github.io/liquidfun

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Particles penetrate regular bodies

denisk20 opened this issue · comments

I'm using liquidfun with libgdx. I have a simple scene with some static bodies and one dynamic body of Circle shape. When particles contact the body under certain ange they penetrate it (slide beneath it). I have attached a gif which shows the issue. Is there anything that can be adjusted to mitigate this? I have tried all possible bodyDef / fixtureDef / particleDef / particleSystemDef tweaks but to no avail.
The code:

        ParticleSystemDef systemDef = new ParticleSystemDef();
        systemDef.radius = 10 * WORLD_TO_BOX;
        systemDef.dampingStrength = 0.2f;
        particleSystem = new ParticleSystem(world, systemDef);

        particleDef = new ParticleDef();
        particleDef.velocity.y = 4;
        particleDef.position.y = 6;

        BodyDef bodyDef = new BodyDef();
        bodyDef.type = BodyType.DynamicBody;
        bodyDef.position.set(1, 1);
        Body body = world.createBody(bodyDef);

        CircleShape shape = new CircleShape();
        shape.setRadius(2);

       body.createFixture(shape, 0.5f);

       ...
       particleSystem.createParticle(particleDef); // in a loop
       ...

       ...
       // in render()
       int particleIterations = particleSystem.calculateReasonableParticleIterations(Gdx.graphics.getDeltaTime());
       world.step(Gdx.graphics.getDeltaTime(), 10, 6, particleIterations);

Screen Recording 2023-03-19 at 21 20 34

Did you try using the bullet attribute of BodyDef? I'm not seeing that in what you've described so far.

@louis-langholtz I actually didn't but unfortunately it doesn't make any difference. The only thing which seems to matter is the type of the body -- the issue doesn't happen for Static or Kinematic types, only for Dynamic, but changing the type is obviously not what I'm looking for.