0
私のレイキャスティングはマウスでは問題ありませんが、タッチでは問題があります。このようThree.js Raycasterはマウスで動作しません。
$(document).bind('mousedown', onDocumentMouseDown);
$(document).bind('mousewheel', onDocumentMouseWheel);
$(document).bind('touchstart', onDocumentTouchStart);
$(document).bind('touchmove', onDocumentTouchMove);
私のマウスイベント
function onDocumentMouseDown(e) {
e.preventDefault();
detectHotspotClick(e.pageX,e.pageY);
}
マイタッチイベント
function onDocumentTouchStart(e) {
e.preventDefault();
var event = e.originalEvent;
if (event.touches.length == 1) {
var t=event.touches[0];
draggingY = t.pageY;
detectHotspotClick(t.pageX,t.pageY);
}
if (event.touches.length == 2) {
var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
_touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);
}
}
マイ検出
function detectHotspotClick(x,y){
console.log('detectHotspotClick('+ x + "," + y+ ")");
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
mouse.x = (x/renderer.domElement.width) * 2 - 1;
mouse.y = - (y/renderer.domElement.height) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(targetList, true);
if (intersects.length > 0)
hotspotClick(intersects[ 0 ].object);
}
として
Iセットアップイベント
これはマウスで正常に動作しますが、私はTouchで気付きました。mouse.xの値は常に否定的であると思われます。
私はこれを検討するべき他の方法はありますか?