我对对象的依赖性有问题。我想让一个对象依赖于另外两个对象。如果我改变一个父对象的位置(例如y-Position),依赖对象(子对象)应该旋转,也应该移动。
这是我在图片上实现它的链接。在左侧是初始状态,在右侧是改变的条件。气缸应该取决于两个方框。这意味着圆柱体是子对象,并且框应该是该子对象的父对象。 我尝试使用父和子属性,但我无法使子对象依赖于两个父对象。
有人可以帮助我吗?
这是我当前的代码,但lookAt函数无法正常工作。
//cube 1
var cube=new THREE.BoxGeometry(4,4,4);
var material=new THREE.MeshBasicMaterial ({ color: 0xffffff });
mesh1=new THREE.Mesh(cube,material);
mesh1.position.set(-2,2,0);
scene.add(mesh1);
//cube 2
var cube2=new THREE.BoxGeometry(2,2,2);
var material=new THREE.MeshBasicMaterial ({ color:0x000000 });
mesh2=new THREE.Mesh(cube2,material);
mesh2.position.x=6;
mesh2.position.y=2;
//mesh2.position.y=-2;
scene.add(mesh2);
//cylinder
var cylinder=new THREE.CylinderGeometry(1,1,6,30);
var material=new THREE.MeshBasicMaterial({ color:0xff3399 });
mesh3=new THREE.Mesh(cylinder,material);
mesh1.add(mesh3);
mesh3.lookAt(mesh2.position);
答案 0 :(得分:0)
您需要两个级别的层次结构,例如:
cube1.add(cylinder)
cylinder.add(cube2)
答案 1 :(得分:0)
您可以使用Object3D class上的lookAt
功能执行您之后的操作。
例如
将您的圆柱体添加为cube1的子元素,因此移动cube1也会移动圆柱体。
cube1.add(cylinder)
然后当cube1(或/和cube2)移动时,调用柱面上的lookAt函数来查看cube2的位置。
cylinder.lookAt(cube2.position)
答案 2 :(得分:0)
是的,2pha实际上是正确的。我认为他实际需要的是这样的事情(注意你需要缩放圆柱体或移动方块,除非它们正好相隔圆柱高度):
cylinder.position.x=cube1.position.x
cylinder.position.y=cube1.position.y
cylinder.position.z=cube1.position.z
cylinder.lookAt(cube2.position)