工作一段时间后让相机运动全部稳定下来,是时候将动作添加到我的three.js项目中了。首先我只是尝试使用camera.translateZ(movementSpeed)
,但这会让相机飞起来,我想限制移动到x和z轴。基本上我计划使用相机y旋转的余弦和正弦来简单地找到z和x速度。这对旋转的前半部分完全正常,但在下半场停止。有没有更好的方法来做到这一点,还是我可以以某种方式解决它?
你可以在http://jsfiddle.net/zLa78yqw/2/找到一个小提琴,请注意我添加了一个球,显示前进的位置会使相机降落。
我确定delta z和x的代码是:
var zvel=Math.cos(camera.rotation.y);
var xvel=Math.sin(camera.rotation.y);
testBall.position.z=camera.position.z-zvel*2;
testBall.position.x=camera.position.x-xvel*2;
请帮助,我已经坚持了一段时间。
TLDR:我需要帮助让3js中的对象向前移动,而不是向上移动。
答案 0 :(得分:0)
我认为你想要的不是camera.rotation.y,而是相机世界方向的方位角。
vector = camera.getWorldDirection();
azimuth= Math.atan2(vector.x,vector.z);