Три. js вопрос о радиопередаче относительно события onclick - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу, чтобы положение камеры менялось при нажатии на меня sh

В приведенном здесь примере http://www.minyoungna.com/ Камера перемещается при нажатии на куб , но камера остается в движении ТОЛЬКО , когда мышь наводит курсор на объект.

Я думаю, что источником этой проблемы является мое событие onclick, но я не знаю, как это исправить.

function onclick (event){
  event.preventDefault();
  var intersects = raycaster.intersectObjects(  scene.children );
  if ( intersects.length > 0 ) {
    tween = new TWEEN.Tween(camera.position) // Create a new tween that modifies 'coords'.
    .to({ x: 100 ,y:100 }, 2000) // Move to (300, 200) in 1 second.
    .easing(TWEEN.Easing.Quadratic.Out) // Use an easing function to make the animation smooth.
    .start(); // Start the tween immediately.
  } else {
  }
}

Я думаю, что Когда происходит событие onclick, оно проверяет, есть ли какие-либо пересекающиеся объекты, использующие raycaster, и запускает анимацию движения, которая заканчивается через две секунды, независимо от того, есть ли какие-либо пересекающиеся объекты после щелчка.

В действительности это когда происходит щелчок, он не только создает неудобство, упомянутое выше, он отключает эффект анимации при последующих щелчках и телепортирует вас в местоположение камеры

Некоторые из моих других функций

function animate (time) {

  for (let property in cube) {
    cube[property].rotation.x += .01;
    cube[property].rotation.y += .01;  

  };
  position(time);
  controls.update();
  composer.render();
  frameId = requestAnimationFrame(animate)
}

function onDocumentMouseMove( event ) {

  event.preventDefault();
  mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
  mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

}

Лучшее

...