Как использовать ApplyForce с box2DWeb

У меня есть скетч 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());
*/

person steven    schedule 13.06.2015    source источник


Ответы (1)


Вы должны вызывать 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());
person Ilya Tikhonov    schedule 20.08.2015