PhysicsJS - Collision between two bodies never ends

741 Views Asked by At

I've got this simple js:

Physics(function( world ){

        //Defining object
        var renderer = Physics.renderer('canvas', {
            el: 'viewport', // id of the canvas element
            width: 500,
            height: 200
        });
        
        var ball = Physics.body('circle', {
            x: 250,
            y: 0,
            radius:10,
            restitution: .8,
            mass: 3,
            vx: 0
        });
        
        var box = Physics.body('rectangle', 
            {
                x: 250,
                y: 150,
                width: 50,
                height: 20,
                restitution:.5,
                treatment: "static"
            }
        );
                
        // Add them to the world
        world.add( renderer );
        world.add( ball );
        world.add( box );        
        
        //Add physical behaviours
        world.add( Physics.behavior('constant-acceleration') );//add gravity
        world.add( Physics.behavior('body-impulse-response') );//make obdies bounce (react to impulse)
        world.add( Physics.behavior('body-collision-detection') );//detect collision between bodies
        world.add( Physics.behavior('sweep-prune') );
        world.add( Physics.behavior('edge-collision-detection', //dectect collision with edges
                {
                    aabb: Physics.aabb(0, 0, 500, 500),
                    restitution:.3
                }
            )  
        );
        
        //START playing
        world.on('render', function( data ){
            var renderer = data.renderer;
        });

        // subscribe to ticker to advance the simulation
        Physics.util.ticker.on(function( time, dt ){
            world.step( time );
        });

        world.on('step', function(){
            world.render();
            console.log(ball.state.vel._[1]);
        });

        // start the ticker
        Physics.util.ticker.start();        

    });
canvas {border:1px solid;}
<script src="http://wellcaffeinated.net/PhysicsJS/assets/scripts/vendor/physicsjs-0.6.0/physicsjs-full-0.6.0.min.js"></script>
<canvas id="viewport" width="500" height="200"></canvas>

that creates a world with a static platform and a ball falling on it. Ball falls and bounces, then bouncing slows and slows but it never ends. I've setted restitution < 1 in the bodies attributes.

Where am I wrong?

1

There are 1 best solutions below

0
On BEST ANSWER

This is a bug with the current version of physicsJS. You're code is correct. Try taking from the 0.7 branch on github. You will need to check out the repo and run "grunt dist".

https://github.com/wellcaffeinated/PhysicsJS/tree/0.7.0

Note this is NOT a 0.7 release. This code is still in development. I suggest monitoring physicsjs and getting the actual 0.7 release when it's ready. Should be soon.