0

我的 Box2DWeb 草图工作正常,但我无法弄清楚如何将 ApplyForce 方法与身体一起使用。我附上了工作的codepen。在第 85 行,我已经注释掉了我认为可行的行,但是当我包含它时,一切都消失了。

如果有人能告诉我正确的使用方法,我会很高兴。我有 RTFM 并在 StackO 上看到过类似的帖子,但我仍然无法解决。

http://codepen.io/anon/pen/vOJByN?editors=101

非常感谢,

史蒂文

// single dynamic object----------------------
  var fixDef2 = new b2FixtureDef;
  fixDef2.density = 1.0
  fixDef2.friction = 0.2;
  fixDef2.restitution = 0.5;

  var bodyDef2 = new b2BodyDef;
  bodyDef2.type = b2Body.b2_dynamicBody;

  fixDef2.shape = new b2PolygonShape;
  fixDef2.shape.SetAsBox((300/SCALE)/2, (60/SCALE) / 2);

  bodyDef2.position.x = canvas.width/4/SCALE;
  bodyDef2.position.y = canvas.height/2/SCALE;
  bodyDef2.angle = 5;

  world.CreateBody(bodyDef2).CreateFixture(fixDef2);

// Apply force to object----------------------
/*bodyDef2.ApplyForce(new b2Vec2(500,50) , bodyDef2.GetWorldCenter());
*/
4

1 回答 1

0

你应该调用ApplyForce方法b2Body,而不是b2BodyDef。您可以获取b2Body对象作为world.CreateBody(bodyDef2)方法的结果。

我在这里更改了您的 codepen:http: //codepen.io/anon/pen/NqZvqG

你的代码:

world.CreateBody(bodyDef2).CreateFixture(fixDef2);

// Apply force to object----------------------
/*bodyDef2.ApplyForce(new b2Vec2(500,50) , bodyDef2.GetWorldCenter());
*/

我的代码:

var myBody = world.CreateBody(bodyDef2);
var myFixture = mybody.CreateFixture(fixDef2);

// Apply force to object
myBody.ApplyForce(new b2Vec2(500,50), myBody.GetWorldCenter());
于 2015-08-20T16:43:24.697 回答