2

我一直在努力掌握来自 XNA / Farseer 背景的 HTML5 游戏写作。

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

我什至在这里查看了源代码,似乎是这样。

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

4

1 回答 1

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 版本的功能,您可以查看原始源代码,然后如上所述自行移植它们。即使您不熟悉 C++,代码也相当容易上手。

于 2013-08-03T01:37:48.103 回答