2011-06-30 14 views
0

私はWP7のために私のゲームの中にBox2Dを統合しようとしています。しかし、私が追加したボディは、重力に期待どおりに反応しません。基本的には、私が変更するプロパティは、私が追加するオブジェクトはまだ非常に "軽い"と思われ、重力の変化に実際には反応しないようです。ここで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 Engineはピクセル単位で設計されていますが、単位は小さく、小さな単位が好きです。 例100ピクセル幅のオブジェクトを作成してオブジェクトを作成するときに、スケール1ピクセル= 1単位を試してみると、Box2Dの大きな惑星として大きくなります。したがって、2つのオブジェクト間の距離が300であれば、それは永遠にコロイドになります あなたがしたいことは、Box2Dが設計されたときのスケールを変更することです。
このようなBox2Dチュートリアルを読むことをお勧めします。http://www.kerp.net/box2d/このチュートリアルはFlash Box2D版ですが、主な違いはクラス名です。