Как я могу использовать controls.update (); с PointerLockControls.js - PullRequest
0 голосов
/ 04 сентября 2018

Когда я использую фрагмент кода, приведенный ниже, мне сказали использовать controls.update (); команда, но я получаю ошибку

Uncaught TypeError: controls.update не является функцией при анимации

Я просмотрел PointerLockControls.js и OrbitControls.js и заметил, что в Orbit есть функция update (), а в Pointer нет, в прошлом я проверял, важно ли обновлять элементы управления для каждого кадра, как мне обойти эту проблему?

var dt = 1/60;
function animate() {
  requestAnimationFrame(animate);
  if(controls.enabled) {
    world.step(dt);

    //update ball positions
    for(var i=0; i<balls.length; i++) {
      ballMeshes[i].position.copy(balls[i].position);
      ballMeshes[i].quaternion.copy(balls[i].quaternion);
    }

    //update box positions
    for(var i=0; i<boxes.length; i++) {
      boxMeshes[i].position.copy(boxes[i].position);
      boxMeshes[i].quaternion.copy(boxes[i].position);
    }
  }

  controls.update(Date.now()-time);
  renderer.render(scene, camera);
  time = Date.now();
}

1 Ответ

0 голосов
/ 04 сентября 2018

Мне сказали использовать команду controls.update (),

Интересно, кто тебе сказал, что ^^? PointerLockControls не имеет метода обновления, потому что он просто выполняет простую обработку событий. Хотя OrbitControls имеет метод обновления, вызывать его нужно только в том случае, если включено демпфирование или автоповорот. Зачем? Потому что, когда активен один из этих параметров, необходимо обновить камеру, даже если не было запущено таких событий, как mousemove или touchmove.

...