Physijs碰撞事件

时间:2016-01-14 08:37:23

标签: javascript three.js physijs

我有两个盒子。一个在地面上产生,另一个在它上面掉落。重力已打开。我试图让碰撞事件监听器在靠近地面的底盒上发射。但是,没有记录任何内容。

var c = new Physijs.BoxMesh( new THREE.CubeGeometry( 5, 5, 5 ), new THREE.MeshBasicMaterial({ color: 0x888888 }) );
c.__dirtyPosition = true;
c.position.set(10, 0,-5);

c.addEventListener('collision', function(object){
    console.log("hello world"); // NOT FIRING
});

scene.add(c);

var p = c.clone();
p.__dirtyPosition = true;
p.position.y = 50;
scene.add(p);

我无法弄清楚我做错了什么 - 可能是因为__dirtyPosition

编辑:我在没有clone()的情况下对其进行了测试并重新创建了第二个框,但它并没有什么区别。

编辑2:值得一提的是,模拟运行良好我无法让听众工作。

1 个答案:

答案 0 :(得分:1)

Relevant GitHub Issue

看起来clone方法是part of THREEjs,而不是Physijs。因此,您的代码只会克隆物理材质,而不是物理网格。您只需使用与BoxMesh相同的代码创建另一个c