在一个只需要纸板查看器的环境中,我一直试图让摄像机慢慢地朝着用户在three.js / WebVR项目中查看的方向前进。
我通过大量的反复试验发现,在非虚拟现实环境中通常可以使用的功能在WebVR中不起作用,我会假设因为透视摄像机的行为已被覆盖可能?
以下内容:
function render() {
camera.translateZ(-0.02);
renderer.render( scene, camera );
}
没用,相机保持静止。所以我想到将相机添加到另一个对象并移动该对象:
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
cube.add(camera);
...
function render() {
cube.translateZ(-0.02);
cube.rotation.copy(camera.rotation);
renderer.render( scene, camera );
}
以上种工作,相机随立方体一起移动但旋转关闭。通过纸板观察器向北看,似乎为了让摄像机向东移动,我必须将观察者向东旋转180度,以便我朝南。
我想我可能会对四元数和欧拉旋转感到困惑,或者我错过了使用vector3定位的技巧?
任何想法都非常感谢!
答案 0 :(得分:0)
制作空GameObject并将其设为MainCamera,然后将该脚本附加到该空游戏对象上。
GameObject cameraMain;
float speed = 2f;
void Start () {
cameraMain = GameObject.FindGameObjectWithTag("MainCamera");
}
void Update () {
transform.localPosition += transform.forward * speed * Time.deltaTime;
transform.localRotation = Quaternion.Euler(cameraMain.transform.localEulerAngles.x, cameraMain.transform.localEulerAngles.y, cameraMain.transform.localEulerAngles.z);
}