Не удается получить FirstPersonControls в Three.js работает - PullRequest
6 голосов
/ 09 ноября 2011

Я пытаюсь это сделать:

controls = new THREE.FirstPersonControls (камера);

controls.movementSpeed ​​= 1000;controls.lookSpeed ​​= 0,125;controls.lookVertical = true;

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

var clock = new THREE.Clock ();

controls.update (clock.getDelta ());

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

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

Спасибо !!

Ответы [ 2 ]

5 голосов
/ 02 июля 2012

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

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

5 голосов
/ 09 ноября 2011

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

Я только что попытался использовать класс, скопировав немного кода из примера 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);
...