2012-12-14 1 views
2

J'ai essayé de me familiariser avec l'écriture de jeu HTML5 provenant d'un contexte XNA/Farseer.Box2dWeb missing Méthodes ApplyLinearImpuse() et ApplyAngularImpulse()?

Il semble que les méthodes ApplyLinearImpuse() et ApplyAngularImpulse() soient manquantes dans box2dweb.

J'ai même regardé la source here et il semble que ce soit le cas.

Est-ce que quelqu'un sait pourquoi ces méthodes ne sont pas fournies?

+1

Probablement parce qu'ils n'existaient pas dans la version de Box2D que box2dweb a été porté à l'époque. – iforce2d

+0

Merci iforce2d, je connais bien votre site. Contenu fantastique! –

Répondre

3

Juste maintenant j'avais besoin de la même chose. Heureusement, la mise en œuvre ou est très simple. Vous pouvez ajouter ce qui suit à votre code pour patcher pour 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; 
    } 
}; 

En général, pour obtenir à des fonctionnalités dans la version C++ qui n'ont pas été portés vers les versions Flash ou JavaScript, vous pouvez jeter un oeil à the original source, et les porter sur vous comme ci-dessus. Même si vous n'êtes pas familier avec C++, le code est assez accessible.