Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Box2dWeb实体不碰撞_Node.js_Box2dweb - Fatal编程技术网

Node.js Box2dWeb实体不碰撞

Node.js Box2dWeb实体不碰撞,node.js,box2dweb,Node.js,Box2dweb,我已经在Node.js服务器中实现了Box2dWeb,除了冲突之外,一切正常。当有两个玩家连在一起时,他们的身体不会发生碰撞-只是互相穿过。以下是玩家身体创建代码: //World creation var world = new b2World(new b2Vec2(0, 0)); //Body+Fixture creation var bodyDef = new b2BodyDef(); bodyDef.type = b2Body.b2_dynamicBody; bodyDef.positi

我已经在Node.js服务器中实现了Box2dWeb,除了冲突之外,一切正常。当有两个玩家连在一起时,他们的身体不会发生碰撞-只是互相穿过。以下是玩家身体创建代码:

//World creation
var world = new b2World(new b2Vec2(0, 0));
//Body+Fixture creation
var bodyDef = new b2BodyDef();
bodyDef.type = b2Body.b2_dynamicBody;
bodyDef.position.x = 100;
bodyDef.position.y = 100;
bodyDef.linearDamping = 5;
bodyDef.angularDamping = 1;

var fixDef = new b2FixtureDef();
fixDef.density = 0.001;
fixDef.friction = 1;
fixDef.restitution = 1;
fixDef.shape = new b2CircleShape;
fixDef.shape.SetRadius(8);

var body = world.CreateBody(bodyDef);
body.CreateFixture(fixDef);
非常感谢您的帮助

编辑:我添加了以下代码:

var listener = new Box2D.Dynamics.b2ContactListener;
listener.BeginContact = function(contact) {
    console.log(contact.GetFixtureA().GetBody().GetUserData());
}
world.SetContactListener(listener);

一旦物体发生碰撞,我会在控制台中得到“null”。

好的,这很简单,就像我预期的那样。我将代码更改为:

this.world.Step(deltaTime);


嘿,很高兴看到您继续使用Box2dWeb;)你是如何在屏幕上绘制实体的?目前我只是通过获取body.GetPosition()在客户端绘制实体。这可能是比例的问题吗?您需要确保在绘制对象时使用了正确的比例值。我刚刚将代码更新为我使用的值。您有没有办法在JSFIDLE上获得一个示例?我想说的是稍微玩弄一下这些数字。也许密度等于100。您正在使用1世界是吗?
this.world.Step(deltaTime, 10, 10);