我试图用 Google的LiquidDun 库替换我当前的Box2D库(box2dweb.js)。

主要的区别似乎是他们将所有 b2#ClassName#类放在了全局范围内,而不是保持模块化(在像box2dweb这样的Box2D.* namespace 中)。

但是似乎他们也省略了一些 b2#ClassName#,我在Box2dWeb.js版本中使用了其中的两个:

  • b2DebugDraw ,以及;
  • b2ContactListener ;

  • 是否已弃用/未完全实现/遗忘了那些?

    最佳答案

    只需将侦听器定义为函数的对象,如下所示:

    var listener =  {
        BeginContactBody: function(contact) {
          console.log(contact.GetFixtureA());
        },
        EndContactBody: function(contact) {
            console.log(contact.GetFixtureA());
        },
        PostSolve: function(contact, impulse) {
    
        },
        PreSolve: function(contact, oldManifold) {
    
        }
    }
    world.SetContactListener(listener);
    

    查看https://github.com/google/liquidfun/blob/master/liquidfun/Box2D/lfjs/jsBindings/Dynamics/b2World.js可以帮助我解决此问题,因此,如果遇到其他c++-> javascript翻译问题,那么这是一个很好的起点。

    关于javascript - 在liquidfun.js中是否已替换了b2DebugDraw和b2ContactListener?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25899357/

    10-10 10:16