【问题标题】:Box2dWeb bodies not collidingBox2dWeb 身体不碰撞
【发布时间】:2015-06-07 14:53:38
【问题描述】:

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

//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”。

【问题讨论】:

  • 嘿,很高兴看到你继续使用 Box2dWeb ;) 你是如何在屏幕上绘制身体的?
  • 目前我只是通过获取body.GetPosition()在客户端绘制body。
  • 会不会是秤的问题?您需要确保在绘制对象时使用正确的比例值。
  • 我刚刚将代码更新为我正在使用的值。
  • 有什么方法可以在 jsFiddle 上获取示例吗?我会说玩弄这些数字。也许使密度= 100。您使用的是 1 个世界,是吗?

标签: node.js box2dweb


【解决方案1】:

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

this.world.Step(deltaTime);

this.world.Step(deltaTime, 10, 10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多