我有两个盒子。一只在地上产卵,另一只掉在地上。地心引力打开了。我正在试着让碰撞事件侦听器向躺在地上的底部盒开火。但是,没有任何记录。
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:值得一提的是,模拟运行良好,我只是无法让听者工作。
发布于 2016-01-24 13:10:45
https://github.com/chandlerprall/Physijs/issues/178
看起来clone方法是部分THREEjs,而不是Physijs。因此,您的代码只是复制物理材料,而不是物理网格。您只需使用与BoxMesh相同的代码创建另一个c。
https://stackoverflow.com/questions/34784908
复制相似问题