Novocaine Posted April 8, 2015 Share Posted April 8, 2015 When implementing collision with P2, I can't seem to get rid of a small bounce-back effect. Example: http://test.xapient.net/phaser/tilemapexample/index-p2.html In this example, when Mario jumps on the ground, it gets a little bit below the ground and then smoothly moves up quickly to stand on it. This doesn't happen with the Arcade physics and I can't seem to get rid of it with P2. Also every other example I've looked at has this effect and I tried several parameters. Since I only need AABB collisions, another approach I tried is implementing the collision myself in the update() routine. A very simple example for just a general ground would be:if (player.body.y >= 500) { player.body.y = 500; player.body.velocity.y = 0;}In this case, for one frame, the player appears below the ground. I assume this is, because this calculation would need to be done between the P2 physics calculations and the rendering, but the update() happens before the P2 physics calculations. Does anyone know how to around this bounce-back effect I'm describing? Cheers! Link to comment Share on other sites More sharing options...
icp Posted April 9, 2015 Share Posted April 9, 2015 http://phaser.io/examples/v2/p2-physics/contact-materialCheck this example, you can see that the keyboard bounces.Now set the contactMaterial.restitution from 1.0 to 0.No more bouncing.Other example:http://schteppe.github.io/p2.js/demos/restitution.htmlworld.addContactMaterial(new p2.ContactMaterial(platformShape2.material, circleShape.material, { restitution : 0.0, // This means no bounce! })); Link to comment Share on other sites More sharing options...
valueerror Posted April 9, 2015 Share Posted April 9, 2015 this has nothing to do with the restitution.. as you can see in the example you postet the circle in the middle also "bounces" -- or in other words .. it sinks into the ground and then moves up again.. you need to observe very carefully to see it.. the faster the object is on collision the bigger the "sink/bounce" effect.. this is a p2 problem. i haven't seen this behaviour in box2d and i already tried to find out more about this but the only person that responded didn't want to see the difference ;-) try this box2d demo.. the box never sinks into the ground.. nomatter how hard you throw it http://phaser.io/examples/v2/box2d/body-debug-draw Link to comment Share on other sites More sharing options...
ZoomBox Posted April 10, 2015 Share Posted April 10, 2015 this has nothing to do with the restitution.. It's clearly written in the example:http://phaser.io/examples/v2/p2-physics/contact-materialThat restitution deals with "how bouncy it is" Link to comment Share on other sites More sharing options...
valueerror Posted April 10, 2015 Share Posted April 10, 2015 yeah but why are we talking about examples where restitution is key.. the topic starter clearly is NOT talking about the bounce effect caused by restitution.. he also postet an example where restitution is left to the default 0 (Zero) and precisely describes what he means. the correct answer to this question is probably: have a look at the relaxation parameter of p2 materials: see this example and play with the values... the very high relaxation value makes the "bounce-back" go away. but now it's stuck inside the other object (because it's not slowly bouncing back anymore) http://phaser.io/sandbox/QBIVoGnH/play Link to comment Share on other sites More sharing options...
ZoomBox Posted April 10, 2015 Share Posted April 10, 2015 I didn't know the default restitution was 0. I thought it was set to something like 0.1.So yeah, you are right.It's probably due to how P2 internaly handles framerate variations. Link to comment Share on other sites More sharing options...
Novocaine Posted April 10, 2015 Author Share Posted April 10, 2015 Thanks for the answers. I'll have a look at Box2D. Sorry for the confusion, I should probably have used the work "sink" or something instead of "bounce". It's really suprising to me that this phenomenon isn't a deal-breaker for more people. I mean, come on, that Mario example looks really weird with Mario sinking below the ground every time. Link to comment Share on other sites More sharing options...
valueerror Posted April 11, 2015 Share Posted April 11, 2015 i don't think it's that big of a problem.. it only happens if you fall down from a big height and only if the gravity is that high.. (most users use a lower setting than 1400) AND you still can tweak the behaviour through stiffness, relaxation, restitution in the real game you constantly walk and jump and look at enemies and the world surrounding you - so it isn't that obvious that the player sinks into an object. BUT i would definitely want to hear what @rich and @schteppe have to say to this Link to comment Share on other sites More sharing options...
Recommended Posts