不能在three.js中将一个位置指向另一个位置

时间:2015-04-16 09:41:53

标签: javascript three.js

我可能误解了职位的运作方式,但他们没有像我期望的那样工作。如果我创建两个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。

(以上是未经测试的代码!)

2 个答案:

答案 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>