Three.js-Raycaster不';我不能在Ipad上正常工作

Three.js-Raycaster不';我不能在Ipad上正常工作,ipad,mobile,three.js,raycasting,interaction,Ipad,Mobile,Three.js,Raycasting,Interaction,我在移动设备上测试代码时遇到了一些问题。我意识到同样的问题出现在threejs.org的官方示例中,当你激活触觉触摸(例如:)。 在threejs中是否有其他方法可以替代Raycaster与对象交互 我正在使用Firefox 58.0.2(64位)来测试我的three.js项目并模拟触觉 提前谢谢 在threejs中是否有其他方法可以替代Raycaster与对象交互 Raycaster不添加事件侦听器,这是应用程序级代码 许多three.js示例仅支持鼠标交互。如果要支持触摸设备,请实现事件侦听

我在移动设备上测试代码时遇到了一些问题。我意识到同样的问题出现在threejs.org的官方示例中,当你激活触觉触摸(例如:)。 在threejs中是否有其他方法可以替代Raycaster与对象交互

我正在使用Firefox 58.0.2(64位)来测试我的three.js项目并模拟触觉

提前谢谢

在threejs中是否有其他方法可以替代Raycaster与对象交互

Raycaster
不添加事件侦听器,这是应用程序级代码

许多
three.js
示例仅支持鼠标交互。如果要支持触摸设备,请实现事件侦听器,如
touchstart
,并使用事件信息执行光线投射

在threejs中是否有其他方法可以替代Raycaster与对象交互

Raycaster
不添加事件侦听器,这是应用程序级代码


许多
three.js
示例仅支持鼠标交互。如果您想支持触摸设备,请实现事件侦听器,如
touchstart
,并使用事件信息执行光线投射。

感谢您的响应

在我的示例中,我必须拖动全景并与全景中的对象交互。 如果可以帮助其他人的话,下面是对我来说非常有用的事件侦听器

function onDocumentTouchStart( event ) {
    console.log("TouchStart")

    event.preventDefault();

    event.clientX = event.touches[0].pageX;
    event.clientY = event.touches[0].pageY;

    onDocumentMouseDown( event );
}

function onDocumentTouchMove( event ) {
    console.log("TouchMove")

    if ( event.touches.length == 1 ) {
      event.preventDefault();
      lon = ( onPointerDownPointerX - event.touches[0].pageX ) * 0.1 + onPointerDownLon;
      lat = ( event.touches[0].pageY - onPointerDownPointerY ) * 0.1 + onPointerDownLat;
    }
}

function onDocumentMouseMove( event ) {

    if ( isUserInteracting === true ) {
      lon = ( onPointerDownPointerX - event.clientX ) * 0.1 + onPointerDownLon;
      lat = ( event.clientY - onPointerDownPointerY ) * 0.1 + onPointerDownLat;
    }
}

function onDocumentMouseDown( event ) {

  event.preventDefault();

  mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1;
  mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1;

  raycaster.setFromCamera( mouse, camera );
  var intersects = raycaster.intersectObjects( scene.children );

  if ( intersects.length > 0 && intersects[0].object.name.includes("sphere")) {
    INTERSECTED = intersects[0].object;

   //some code

  isUserInteracting = true

  onPointerDownPointerX = event.clientX;
  onPointerDownPointerY = event.clientY;

  onPointerDownLon = lon;
  onPointerDownLat = lat;
}

谢谢你的回复

在我的示例中,我必须拖动全景并与全景中的对象交互。 如果可以帮助其他人的话,下面是对我来说非常有用的事件侦听器

function onDocumentTouchStart( event ) {
    console.log("TouchStart")

    event.preventDefault();

    event.clientX = event.touches[0].pageX;
    event.clientY = event.touches[0].pageY;

    onDocumentMouseDown( event );
}

function onDocumentTouchMove( event ) {
    console.log("TouchMove")

    if ( event.touches.length == 1 ) {
      event.preventDefault();
      lon = ( onPointerDownPointerX - event.touches[0].pageX ) * 0.1 + onPointerDownLon;
      lat = ( event.touches[0].pageY - onPointerDownPointerY ) * 0.1 + onPointerDownLat;
    }
}

function onDocumentMouseMove( event ) {

    if ( isUserInteracting === true ) {
      lon = ( onPointerDownPointerX - event.clientX ) * 0.1 + onPointerDownLon;
      lat = ( event.clientY - onPointerDownPointerY ) * 0.1 + onPointerDownLat;
    }
}

function onDocumentMouseDown( event ) {

  event.preventDefault();

  mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1;
  mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1;

  raycaster.setFromCamera( mouse, camera );
  var intersects = raycaster.intersectObjects( scene.children );

  if ( intersects.length > 0 && intersects[0].object.name.includes("sphere")) {
    INTERSECTED = intersects[0].object;

   //some code

  isUserInteracting = true

  onPointerDownPointerX = event.clientX;
  onPointerDownPointerY = event.clientY;

  onPointerDownLon = lon;
  onPointerDownLat = lat;
}

它不工作是因为它没有用于的侦听器。它不工作是因为它没有用于的侦听器。