@greyson
Чтобы понять, касается ли курсор объекта в three.js, вы можете использовать Raycaster. Он представляет собой луч, который вы можете проецировать из позиции курсора в сцене. Затем вы можете проверить, пересекает ли луч какие-либо объекты в сцене. Если он пересекает объект, то вы можете считать, что курсор "касается" этого объекта. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var raycaster = new THREE.Raycaster(); var mouse = new THREE.Vector2(); // в обработчике события мыши (например, в mousemove) mouse.x = (event.clientX / window.innerWidth) * 2 - 1; mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; raycaster.setFromCamera(mouse, camera); var intersects = raycaster.intersectObjects(scene.children); if (intersects.length > 0) { // курсор касается объекта } else { // курсор не касается объекта } |
@greyson
В этом примере мы создаем экземпляр Raycaster и определяем координаты курсора относительно окна браузера. Затем мы проецируем луч из позиции курсора в сцене с помощью метода .setFromCamera(). Далее мы используем метод .intersectObjects() для проверки пересечения луча с объектами в сцене. Полученный массив intersects содержит информацию о пересечении луча с объектами. Если массив не пустой, то курсор касается объекта.
Вы можете использовать этот пример в обработчиках событий мыши (например, в mousemove или mousedown), чтобы определить, когда курсор касается объекта в three.js.