ThreeJS难以正确地将球体与盒子合并

时间:2016-11-21 05:56:03

标签: javascript three.js

当两个物体相互接触时,我试图用ThreeJS将一个盒子附加到一个球体上。它们应该连接在它们的交叉点(想想Katamari Damacy)。出于某种原因,现在使用我的代码,当我通过将框添加到球体的层次结构来合并两个对象时,它们会连接,但新连接的对象甚至彼此不相近。这基本上是我的代码:

var ball_geometry = new THREE.TetrahedronGeometry( 10, 2 );
var ball_material = new THREE.MeshPhongMaterial( {shading:THREE.FlatShading} );
player.mesh = new THREE.Mesh( ball_geometry, ball_material );

player.mesh.position.set(0,30,0);
scene.add( player.mesh );

var box_geometry = new THREE.BoxGeometry( 20, 10, 10 );
var box_material = new THREE.MeshPhongMaterial( { shading:THREE.FlatShading});
box = new THREE.Mesh( box_geometry, box_material );

box.position.set(50,10,50);
scene.add( box);

player.mesh.add(box);

从我的测试来看,似乎我的player.mesh的初始位置在两个对象在合并时的接近程度上发挥了作用。例如,如果player.mesh产生更远的距离,那么当它最终与盒子碰撞时,两个对象之间的距离会更长。

如何解决这个问题的任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了我的问题的答案:框的位置Vector3仅与其父级相关。因此,我为box.position设置的位置应该考虑到(0,0,0)是其父级的位置。