Sign in to follow this  
DeViLaToR

p2js just for collision detection

Recommended Posts

Hello everyone!

 

I am making a game and i have some objects with triangular shape.

I use p2js just for collision detection with onBeginContact (everything else is handled manually, like movement etc.).

 

So i am wondering if there is a less expensive way to detect polygon collision.

 

Thanks

 

Share this post


Link to post
Share on other sites

You can set every P2 body as a sensor, eg:

this.game.physics.p2.enable(sprte);sprte.body.data.shapes[0].sensor = true;

It may not be super efficient, but it will mean the objects/sensors will just float through each other when they "collide", the onBeginContact and onEndContact events will fire.

Share this post


Link to post
Share on other sites

You can set every P2 body as a sensor, eg:

this.game.physics.p2.enable(sprte);sprte.body.data.shapes[0].sensor = true;

It may not be super efficient, but it will mean the objects/sensors will just float through each other when they "collide", the onBeginContact and onEndContact events will fire.

This is what i 'm using right now :)

 

@wayfinder

 

True.

I will search if there is any js library for polygon collision and check if prerformance improves.

 

Share this post


Link to post
Share on other sites

I have the same exact need!

 

Is there any way to create a sensor that can be moved by updating it's x and y coordinates that has no other physics involved? I can't seem to find the magic combination of settings to make this happen.

 

Did you find a lightweight JS library for polygon collision detection?

 

These look promising:

 

http://codepen.io/soulwire/pen/DoIuf

https://github.com/jriecken/sat-js

Share this post


Link to post
Share on other sites

I achieved success using SAT.js using the function below. Since my the player's poly never changes I'll predefine that to optimize. The obstacle poly would also be predefined and passed to the function. 

function collisionCheck(obstacle) {	var V = SAT.Vector;	var P = SAT.Polygon;	// points are negative because objects are bottom right aligned	var carPoly = new P(new V(car.x, car.y), [new V(-200, -184), new V(-6, -76), new V(-90, -25), new V(-285, -132)]);	var obstaclePoly = new P(new V(obstacle.x, obstacle.y), [new V(-200, -184), new V(-6, -76), new V(-90, -25), new V(-285, -132)]);	var response = new SAT.Response();	var collided = SAT.testPolygonPolygon(carPoly, obstaclePoly, response);	//console.log(car.key, obstacle.key, collided);	if (collided){		car.tint = 0xFF0000;	}}

This class my be more robust and not as lightweight as I need, but it's probably more efficient than turning on the P2JS system just for collision detection.

Share this post


Link to post
Share on other sites

I achieved success using SAT.js using the function below. Since my the player's poly never changes I'll predefine that to optimize. The obstacle poly would also be predefined and passed to the function. 

function collisionCheck(obstacle) {	var V = SAT.Vector;	var P = SAT.Polygon;	// points are negative because objects are bottom right aligned	var carPoly = new P(new V(car.x, car.y), [new V(-200, -184), new V(-6, -76), new V(-90, -25), new V(-285, -132)]);	var obstaclePoly = new P(new V(obstacle.x, obstacle.y), [new V(-200, -184), new V(-6, -76), new V(-90, -25), new V(-285, -132)]);	var response = new SAT.Response();	var collided = SAT.testPolygonPolygon(carPoly, obstaclePoly, response);	//console.log(car.key, obstacle.key, collided);	if (collided){		car.tint = 0xFF0000;	}}

This class my be more robust and not as lightweight as I need, but it's probably more efficient than turning on the P2JS system just for collision detection.

Excellent library. Exactly what i needed!!

Share this post


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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.