Three.js-Raycaster不';我不能在Ipad上正常工作
我在移动设备上测试代码时遇到了一些问题。我意识到同样的问题出现在threejs.org的官方示例中,当你激活触觉触摸(例如:)。 在threejs中是否有其他方法可以替代Raycaster与对象交互 我正在使用Firefox 58.0.2(64位)来测试我的three.js项目并模拟触觉 提前谢谢 在threejs中是否有其他方法可以替代Raycaster与对象交互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示例仅支持鼠标交互。如果要支持触摸设备,请实现事件侦听
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;
}
它不工作是因为它没有用于的侦听器。它不工作是因为它没有用于的侦听器。