diff --git a/src/core/Raycaster.js b/src/core/Raycaster.js index 6df5d86..bf6b545 100644 --- a/src/core/Raycaster.js +++ b/src/core/Raycaster.js @@ -133,14 +133,15 @@ export default { this._intersects = intersects; }, onMouseMove(evt) { - this.pointer.x = (evt.offsetX / this.three.size.width) * 2 - 1; - this.pointer.y = - (evt.offsetY / this.three.size.height) * 2 + 1; + const { top: canvasTop, left: canvasLeft } = this.three.mouse_move_element.getBoundingClientRect() + this.pointer.x = ((evt.x - canvasLeft) / this.three.size.width) * 2 - 1; + this.pointer.y = - ((evt.y - canvasTop) / this.three.size.height) * 2 + 1; }, onTouchMove(evt) { const touch = evt.touches[0] - const { top: canvasTop, left: canvasLeft } = touch.target.getBoundingClientRect() - this.pointer.x = ((touch.clientX - canvasLeft) / this.three.size.width) * 2 - 1 - this.pointer.y = -((touch.clientY) / this.three.size.height) * 2 + 1 + const { top: canvasTop, left: canvasLeft } = this.three.mouse_move_element.getBoundingClientRect() + this.pointer.x = ((touch.x - canvasLeft) / this.three.size.width) * 2 - 1 + this.pointer.y = -((touch.y - canvasTop) / this.three.size.height) * 2 + 1 } }, render() {