2011-06-30 38 views
0

我尝试将Box2D集成到我的WP7游戏中。然而,我补充说的这些尸体并没有像预期的那样对重力做出反应。基本上,无论我修改的属性如何,我添加的对象似乎都很“轻”,并且实际上并不会对重力变化做出响应。Box2d.XNA重力问题

下面是代码:

void Init 
{ 
     world = new World(new Vector2(0, 100), false); 

      world.ContinuousPhysics = true; 

      // add ground 
      BodyDef bd = new BodyDef(); 
      Body ground = world.CreateBody(bd); 
      PolygonShape shape = new PolygonShape(); 
      shape.SetAsEdge(new Vector2(0.0f, bbheight), new Vector2(bbwidth, bbheight)); 
      ground.CreateFixture(shape, 0.0f); 


      AddObject(new Vector2(450,0)); 
} 

private void AddObject(Vector2 position) 

     { 
      float PTM = 32; 
      Vector2 pos = new Vector2(position.X/PTM, position.Y/PTM); 
      var circle = new CircleShape(); 
      circle._radius = 1.0f; 

      var fd = new FixtureDef(); 
      fd.shape = circle; 
      fd.restitution = 0.5f; 
      fd.friction = 1.0f; 
      fd.density = 1000.0f; 

      BodyDef bd = new BodyDef(); 
      bd.type = BodyType.Dynamic; 
      bd.fixedRotation = true; 
      bd.allowSleep = false; 
      bd.position = pos; 

      var body = world.CreateBody(bd); 
      body.CreateFixture(fd); 
      body.SetUserData(Red); 
     } 

我将不胜感激,如果你能给予一定的帮助。 谢谢!

+1

你的重力应该是向上吗? (0,100) – iforce2d

回答

0

Box2D引擎的设计像素,但在单位,它喜欢小单位。 示例如果您尝试缩放1像素= 1单位,并且对象宽度为100像素,则对于Box2D而言它很大。所以,如果两个物体之间的距离是300,那么就需要永远的磨合 你需要做的是按Box2D的设计改变比例。
我建议你阅读或观看一些Box2D教程,如这个http://www.kerp.net/box2d/本教程是为Flash Box2D版本,但主要的区别是类名。