ThreeJS:在y轴上旋转以面向相机

wil*_*lly 3 javascript three.js

我希望我的物体在Y轴上旋转以始终面向相机(就像人类在圆圈中转动一样),随着相机的移动.

这是我到目前为止所尝试的:

var render = function() {
    animationFrameId = window.requestAnimationFrame( render);

    obj.lookAt(camera.position);

    obj.rotation.set(0, obj.rotation.y, 0);
}
Run Code Online (Sandbox Code Playgroud)

但是我缺少一些简单的数学或触发函数,因为当我旋转时,它最终会"跳跃"并且对象看起来面向错误的方向

小智 9

如果您使用.lookAt对象在所有方向上看相机,您必须像这样计算相机和网格之间的Y平面上的角度.

var render = function() {

    animationFrameId = window.requestAnimationFrame( render);    

    obj.rotation.y = Math.atan2( ( camera.position.x - obj.position.x ), ( camera.position.z - obj.position.z ) );

}
Run Code Online (Sandbox Code Playgroud)