Jump to content

P2 physics overflow static body


Recommended Posts

Hi, i have the problem that body overflows another static body on first collision(gif file attached). Maybe somebody knows some solution? Thank you.

 

Code: 

 

        this.physics.startSystem(Phaser.Physics.P2JS);
        this.physics.p2.restitution = 0.63;
        this.physics.p2.gravity.y = 3000;
        this.physics.p2.gravity.x = 0;

        this.ballCollisionGroup = this.game.physics.p2.createCollisionGroup();
        this.hoopCollisionGroup = this.game.physics.p2.createCollisionGroup();
        this.groundCollisionGroup = this.game.physics.p2.createCollisionGroup();
        this.ball = this.game.add.sprite(-120, 500,'ball');
        this.game.physics.p2.enable(this.ball);
        this.ball.body.setCircle(23);
        this.ball.body.setCollisionGroup(this.ballCollisionGroup);
        this.ball.body.collides([this.hoopCollisionGroup, this.groundCollisionGroup]);
        this.ball.body.debug = true;


        this.hoop_left = this.game.add.sprite(565, 294,'rect');
        this.game.physics.p2.enable(this.hoop_left);
        this.hoop_left.body.setRectangle(5,10);
        this.hoop_left.body.static = true;
        this.hoop_left.body.setCollisionGroup(this.hoopCollisionGroup);
        this.hoop_left.body.collides([this.ballCollisionGroup]);
        this.hoop_left.original_key = 'hoop_left';
        this.hoop_left.body.debug = true;

        this.hoop_right = this.game.add.sprite(619, 294, 'rect');
        this.game.physics.p2.enable(this.hoop_right);
        this.hoop_right.body.setRectangle(5,10);
        this.hoop_right.body.static = true;
        this.hoop_right.body.setCollisionGroup(this.hoopCollisionGroup);
        this.hoop_right.body.collides([this.ballCollisionGroup]);
        this.hoop_right.original_key = 'hoop_right';
        this.hoop_right.body.debug = true;


         this.ball.body.velocity.x = 932;
         this.ball.body.velocity.y = -1536;
         this.ball.body.rotateLeft(300);

 

2018-01-15 10.24.12.gif

Link to post
Share on other sites

Hi wexing. What do you mean by overflow? The ball slightly entering the right_hoop ? This might be due to tunnelling.

Quote

In a discrete dynamics world, (i.e. when not using Continuous Collision Detection), objects are moved to a new place each tick, and then collision tests are performed. This means that the object, if fast enough, can move from one side of a wall to another without any collision being registered. This is called tunnelling and is usually a bug. It can be fixed by using Continuous Collision Detection or by Stepping the World at a faster internal rate.

AFAIK, p2js only partially supports Continuous Collision Detection, if at all. Making the hoop rects slightly wider, will help -  https://jsfiddle.net/gauravdixitv/cb0z6yb7/

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...