2016-01-14 38 views
0

我有两个盒子。一个在地上产卵,另一个在其上面。重力打开。我试图让碰撞事件的听众在底部放置在地面上的盒子上开火。但是,没有记录。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:值得一提的是,模拟运行良好,我只是无法让听众工作。

+0

尝试设置__dirtyPosition * *后position.y改变 – Neil

+0

@Neil感谢,但没有奏效 – Carpetfizz

回答

1

Relevant GitHub Issue

它看起来像clone方法part of THREEjs,不Physijs。所以你的代码只是克隆物理材料,而不是物理网格。您只需要使用与c相同的代码创建另一个BoxMesh

+0

其实,此代码的工作我的应用程序的范围之外罚款,问题是我的代码的其余部分里面的东西特别。 – Carpetfizz