我正在尝试向游戏世界添加一些可以移动的圆形物体。 而且我需要检测它们何时发生碰撞,还要让它们通过。
我尝试使圆圈为isSensor和Static-未检测到碰撞。 我试图使它们成为isSensor和NO Static-可以检测到碰撞,但是它们掉入了重力/物理学的世界巨石。 我尝试删除物理场,但未检测到碰撞。
该怎么办?
答案 0 :(得分:0)
您可以将自己的碰撞检测与勾股定理一起使用,如下所示:
Events.on(engine, 'beforeUpdate', function() {
var circleAX = circleA.position.x;
var circleAY = circleA.position.y;
var circleBX = circleB.position.x;
var circleBY = circleB.position.y;
var dx = circleAX - circleBX;
var dy = circleAY - circleBY;
var dist = Math.sqrt(dy*dy + dx*dx);
//substitute radiusA and radiusB for the radiuses of the circles
if (dist < radiusA+radiusB) {
//Collision
}
});
要确保它们不会发生碰撞,请使用碰撞过滤器。
如果您要追求高效率,那不是最好的方法。但是,除非您要检查数百个物体是否发生碰撞,否则它不应使游戏速度减慢至足以产生真正的变化。