【问题标题】:Physijs stops updating?Physijs 停止更新?
【发布时间】:2015-05-01 13:59:11
【问题描述】:

我正在尝试使用 Three.js 和物理插件 physijs 制作一个小项目;只是一个小骰子。我的方法是使用 setGravity 来移动骰子,模拟重力来移动骰子。我遇到的问题是,一旦骰子停下来,它们就不再对重力做出反应。有没有人遇到过这种情况?

【问题讨论】:

    标签: physijs


    【解决方案1】:

    发生了什么: Physijs 所基于的 Ammo.js 将静止或非常缓慢移动的物体置于睡眠状态以节省性能。所以当你改变世界的重力时,沉睡的物体并不在乎,因为物理学并没有告诉他们重力已经改变了。

    您可以修改sleeping thresholds、设置activation states 或在改变重力之前快速激活刚体。

    请注意此代码适用于本机 Ammo.js,我不知道如何 在使用 physijs 时这样做,但你明白了。

    解决方案 1:循环你的身体并激活它们,然后改变重力:

    // dice is an array with your rigid bodys
    for ( var i = 0; i < dice.length; i ++ ) {
        // hey wake up
        dice[ i ].activate();
    }
    physicsWorld.setGravity( new Ammo.btVector3( 0, -9.81, 0 ) );
    

    解决方案 2:不要睡觉,在创建骰子后执行此操作:

    var DISABLE_DEACTIVATION = 4;
    for ( var i = 0; i < dice.length; i ++ )
        // no sleep for you... ever
        dice[ i ].setActivationState( DISABLE_DEACTIVATION );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2012-09-03
      相关资源
      最近更新 更多