seunguri / penguins-ice-breaker

Browser based board game Using React, TypeScript, Three.Js and WebGL
1 stars 0 forks source link

OrbitControl Zoom 할 때, Unable to preventDefault()... #2

Closed seunguri closed 3 months ago

seunguri commented 4 months ago
스크린샷 2024-05-03 오후 3 24 03
seunguri commented 4 months ago

Zoom을 막자

<OrbitControls makeDefault  enableZoom={false}/>
Me1e commented 4 months ago

OrbitControls 컴포넌트를 extend하자

import { useEffect } from 'react';
import { extend, useThree } from '@react-three/fiber';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';

extend({ OrbitControls });

const CustomOrbitControls = () => {
  const {
    camera,
    gl: { domElement },
  } = useThree();

  useEffect(() => {
    const handleTouchStart = (event) => {
      event.preventDefault();
    };

    domElement.addEventListener('scroll', handleTouchStart, {
      passive: false,
    });
    return () => {
      domElement.removeEventListener('scroll', handleTouchStart);
    };
  }, [domElement]);

  return <orbitControls args={[camera, domElement]} />;
};

export default CustomOrbitControls;
Me1e commented 3 months ago

import { OrbitControls } from '@react-three/drei'; drei 라이브러리에서 import하면 해결되는 듯?