我试图让儿童对象跟随父母的位置并且表现得像一个普通的孩子,但是我希望它保持它的旋转不变。
在不影响性能的情况下,最好的方法是什么?(我已经在运行2名工作人员并拥有大量对象的cpu预算紧张)? 是否有允许只有孩子的位置受到影响的设置?
同样重要的是,当父母被轮换时,孩子的位置应该跟随轮换。
答案 0 :(得分:2)
您希望在子女的父级轮换时阻止子对象旋转。
这两种模式中的一种应该做你想要的。他们的行为略有不同。
第一种模式:
var gyro = new THREE.Gyroscope();
scene.add( parent );
parent.add( gyro );
gyro.add( child ); // add child to gyroscope
child.position.set( x, y, z );
第二种模式:
object = new THREE.Object3D();
object.position.set( x, y, z ); // child's desired position relative to parent
scene.add( parent );
parent.add( object ); // add object to parent
scene.add( child ); // add child to scene
在第二种情况下,您必须在渲染循环中手动更新子位置,如下所示:
child.position.setFromMatrixPosition( object.matrixWorld );
three.js r.71
答案 1 :(得分:1)
我建议
child.position.copy(object.position);
而不是WestLangley答案中的建议:
child.position.setFromMatrixPosition( object.matrixWorld );
我遇到了一个问题,后者不准确,导致孩子的位置发抖。
请注意,这仅回答您问题的第一部分,即如何遵循父母的位置,使孩子的轮换保持不变。
也许我需要澄清问题的第二部分,因为对我来说这还不是很清楚。