2011-11-09 5 views
5

я пытаюсь это:Не удается получить FirstPersonControls в three.js рабочих

управления = новые THREE.FirstPersonControls (камеры);

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

это не сработало, От here я узнал, что мне нужно, чтобы обновить элемент управления с временем дельта:

вар часы = новый THREE.Clock();

controls.update (clock.getDelta());

, но я получаю undefined is not a function ошибка для THREE.Clock()

пожалуйста, вы можете указать мне работать демо/учебник с FirstPersonControls, или просто скажите мне, что случилось?

Спасибо!

ответ

4

Вы пробовали просто позвонить controls.update(); (с делом, проходящим через дельту)?

Я только что попробовал использовать класс, скопировав немного кода из примера misc_sound.html. Таким образом, в Init():

controls = new THREE.FirstPersonControls(camera); 

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

и визуализации():

controls.update(); 

Update

Как Тодд указывает, в более новых версиях, время дельта аргумент должен быть в комплекте:

controls.update(delta); 
+0

Эй, это сработало! благодаря! запутался по почте по аналогичной проблеме. –

+2

см. [Ответ Тоддморрисона] (http://stackoverflow.com/a/11286753/1888983), если вы, как я, вы вслепую начали копировать/вставлять сначала: P Для вызова требуется 'controls.update (delta);' – jozxyqk

5

Обратите внимание, что в R49, этот api теперь требует «дельта» в вызове обновления. Дельта должна быть миллисекундным смещением с момента последнего обновления, которое должно быть передано через обратный вызов requestAnimationFrame.

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