我可能误解了职位的运作方式,但他们没有像我期望的那样工作。如果我创建两个Object3D,我希望能够给第二个的position属性赋予第一个引用属性,以便它跟随它,但这似乎不起作用:
var foo = new THREE.Object3D();
foo.position = new THREE.Vector3(100, 200, 300);
var bar= new THREE.Object3D();
bar.position = foo.position;
console.log(foo.position); //{100, 200, 300}
console.log(bar.position); //{0, 0, 0}
我在这里做错了什么?还有另一种方法似乎创建了一个新的Vector3:
var foo = new THREE.Object3D();
foo.position = new THREE.Vector3(100, 200, 300);
var bar= new THREE.Object3D();
bar.position = foo.position.copy();
console.log(foo.position); //{100, 200, 300}
console.log(bar.position); //{100, 200, 300}
由于这会创建一个新的Vector3,这只会在我移动foo之前有效 - 然后我必须再次更新bar.position。
(以上是未经测试的代码!)
答案 0 :(得分:1)
bar.position.set(foo.position.x,foo.position.y,foo.position.z);
始终使用class .set(x,y,z),不要使用position = new.THREE.Vector3(1,2,3)
答案 1 :(得分:0)
如果您想要关注一个对象,例如将它附加到另一个,然后你需要.add()
以下对象跟随被跟踪的对象。
请参阅此小提琴http://jsfiddle.net/cdc1u9dk/,您可以在其中点击立方体,立方体向左跳跃一点,球体'跟随'立方体,因为它在第19行cube.add( sphere );
<附加到它/ p>