漏洞? Physijs 克隆不保留 Phsyijs 属性(碰撞能力)

BUG? Physijs Clone does not retain Phsyijs properties (collide-ability)

在 Physijs 中,我创建了一个 "bumper" 圆柱体网格,供球体弹开。 然后我克隆了网格,定位了克隆(在这个例子中,是原始网格)并将它们添加到 "ground" 框中,如下所示:

    // CREATE AND CLONE A BUMPER
bumper = new Physijs.CylinderMesh
(
    new THREE.CylinderGeometry( 5, 5, 7, 20, 80, false ),
    ground_material,
    0 // mass 
);

var Bumper01 = bumper.clone();
var Bumper02 = bumper.clone();

// POSITION THE CLONES AND THE ORIGINAL BUMPER 
Bumper01.position.set( -2, 4, -50 );
Bumper02.position.set( 2, 4, -10 );
bumper.position.set( 0, 4, 30 );

// ADD THE CLONES AND THE ORIGINAL BUMPER TO THE GROUND CUBE
groundCube.add( bumper, Bumper01, Bumper02 );

scene.add( groundCube );

只有原来的保险杠起作用,球体穿过克隆体。

工作示例HERE

我是不是做错了什么? "clone" 不打算在 Physijs 中以这种方式工作吗?

我发现错误了吗?

现在,我将为我需要的每个保险杠创建新的 Phsyijs 网格...

-Marqso

我想我知道你在说什么。

内部 clone() 函数创建一个新的 THREE.Mesh,而不是 Physijs。要解决这个问题,只需创建一个克隆函数,将 THREE.Mesh 封装到 Physijs.CylinderMesh:

function cloneBumper(){
    var obj = new Physijs.CylinderMesh(bumper.clone().geometry, bumper.material, bumper.mass);
    return obj;
}

完成!您的保险杠现在应该已正确克隆!