aframe - заставьте ‹a-cursor› следовать за мышью на рабочем столе

ОБНОВЛЕНИЕ: проблема решена этим плагином https://github.com/mayognaise/aframe-mouse-cursor-component

Здесь новинка для aframe. Я создаю сцену, в которой я хочу, чтобы пользователь мог «щелкать» по объектам в настольном браузере, и я не хотел слишком долго возиться с существующим кодом элементов управления внешним видом или создавать новый компонент, поэтому я посмотрел на код из https://stackoverflow.com/a/36071100/5132437 и разработал решение, в котором я пытаюсь сделать позицию следуйте за движением мыши:

// code for moving the cursor
var mouse = {
  x: 0,
  y: 0
};
var camera = document.querySelector('#camera').components.camera.camera;
console.log(camera.position);

function onMouseMove(event) {

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

  var vector = new THREE.Vector3(mouse.x, mouse.y, -1);
  vector.unproject(camera);
  var dir = vector.sub(camera.position).normalize();
  var distance = -camera.position.z / dir.z;
  var pos = camera.position.clone().add(dir.multiplyScalar(distance));
  positionStr = String(pos.x) + " " + String(pos.y) + " " + String(pos.z);
  document.querySelector('#cursor').setAttribute('position', positionStr);
}

window.addEventListener('mousemove', onMouseMove, false);

Проблема здесь в том, что каждый раз, когда мышь перемещает курсор, он исчезает в позиции (0,0,0). Я понимаю, что может возникнуть проблема с получением правильных данных камеры в кадре, но я не уверен.

Полный jsFiddle здесь

Любая помощь будет оценена


person rlwhuang    schedule 02.04.2016    source источник
comment
Как упоминалось в документации к плагину, эта функция теперь доступна в A-Frame v0.6.1, установив <a-scene cursor="rayOrigin: mouse">.   -  person klaasman    schedule 03.08.2017


Ответы (1)