Box2dWeb缺少ApplyLinearImpuse()和ApplyAngularImpulse()方法?

时间:2012-12-14 12:33:39

标签: html5 canvas box2d box2dweb

我一直试图掌握来自XNA / Farseer背景的HTML5游戏写作。

似乎box2dweb缺少ApplyLinearImpuse()和ApplyAngularImpulse()方法。

我甚至查看了源here,似乎就是这种情况。

有谁知道为什么不提供这些方法?

1 个答案:

答案 0 :(得分:3)

刚才我需要同样的东西。幸运的是,实现或ApplyAngularImpulse非常简单。您可以将以下内容添加到代码中以将其修补到box2d:

<强> Box2Dweb

b2Body.prototype.ApplyAngularImpulse = function(impulse) {
    if (this.IsAwake() == false) {
        this.SetAwake(true);
    }
    this.m_angularVelocity += this.m_invI * impulse;
};

<强> Box2Djs

b2Body.prototype.ApplyAngularImpulse = function(impulse) {
    if (this.IsSleeping() == false)
    {
        this.m_angularVelocity += this.m_invI * impulse;
    }
};

一般情况下,要获得C ++版本中尚未移植到Flash或JavaScript版本的功能,您可以查看the original source,并按上述方式将它们移植到自己身上。即使您不熟悉C ++,代码也非常平易近人。