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



我可能误解了职位的工作方式,但它们并没有按照我期望的方式工作。 如果我创建两个 Object3D,我希望能够为第二个的位置属性提供对第一个的引用,以便它跟随它,但这似乎不起作用:

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。

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

bar.position.set(foo.position.x,foo.position.y,foo.position.z);

始终使用类 .set(x,y,z),不要使用 position = new。三。矢量3(1,2,3)

如果您希望一个对象跟随,例如将其附加到另一个对象,则需要将以下对象.add()到被关注的对象。

看到这个小提琴 http://jsfiddle.net/cdc1u9dk/你可以点击立方体,立方体向左跳一点,球体"跟随"立方体,因为它在第 19 行cube.add( sphere );

相关内容

最新更新