无法在three.js中获得FirstPersonControls

时间:2011-11-09 10:59:46

标签: javascript html5 webgl three.js

我正在尝试这个:

  

controls = new THREE.FirstPersonControls(camera);

     

controls.movementSpeed = 1000;   controls.lookSpeed = 0.125;   controls.lookVertical = true;

它不起作用, 从here我发现我需要用时间增量更新控件:

  

var clock = new THREE.Clock();

     

controls.update(clock.getDelta());

undefined is not a function

错误THREE.Clock()

您能指点我使用FirstPersonControls进行演示/教程,或者只是告诉我哪里错了?

谢谢!

2 个答案:

答案 0 :(得分:5)

您是否尝试过简单地调用controls.update();(通过delta)?

我刚尝试通过复制misc_sound.html示例中的一些代码来使用该类。 所以在init():

controls = new THREE.FirstPersonControls( camera );

                controls.movementSpeed = 70;
                controls.lookSpeed = 0.05;
                controls.noFly = true;
                controls.lookVertical = false;

并在render()中:

controls.update();

<强>更新

正如托德所指出的,在较新的版本中,需要提供增量时间参数:

controls.update(delta);

答案 1 :(得分:5)

请注意,在R49中,此api现在需要更新调用上的“delta”。 delta必须是自上次更新以来的毫秒位移,应该通过requestAnimationFrame回调传递。

http://paulirish.com/2011/requestanimationframe-for-smart-animating/