Unity에서 게임 컨트롤러로 가상 마우스 제어하기

폴더블, 태블릿, 대형 화면을 비롯한 다양한 폼 팩터용 Android 게임을 개발할 때 플레이어는 외부 컨트롤러 또는 게임패드를 연결하는 경우가 많습니다. 원래 터치 또는 마우스 상호작용을 위해 설계된 UI 화면의 경우 컨트롤러로 메뉴를 탐색하기가 어려울 수 있습니다.

표준 D패드 탐색을 중심으로 UI 아키텍처를 재설계하면 일반적으로 더 나은 사용자 환경을 제공하지만 기존 프로젝트에서는 항상 실현 가능하지 않을 수 있습니다. 대안으로 Unity 입력 시스템 은 VirtualMouseInput 구성요소를 제공합니다. 이 구성요소를 사용하면 연결된 게임패드 또는 컨트롤러를 사용하여 가상 화면 소프트웨어 커서를 구동할 수 있습니다.

VirtualMouseInput 정보

VirtualMouseInput 구성요소는 게임패드 입력을 화면 커서 제어, UI 포인터 상호작용, 시뮬레이션된 터치스크린 이벤트에 연결하는 Unity 입력 시스템 패키지의 고급 유틸리티입니다. 활성 상태일 때 다음을 실행합니다.

  • 가상 마우스 기기 만들기: Unity 입력 시스템에 소프트웨어 시뮬레이션 마우스를 실제 포인팅 기기와 함께 등록합니다.
  • 게임패드 컨트롤을 커서 작업에 매핑: 아날로그 스틱 또는 D패드를 바인딩하여 화면에서 커서를 이동하고 컨트롤러 버튼(예: 버튼 남쪽 / A)을 매핑하여 마우스 왼쪽, 오른쪽 또는 가운데 버튼 클릭을 시뮬레이션할 수 있습니다.
  • Unity UI와 통합: InputSystemUIInputModule과 원활하게 작동하여 버튼, 전환, 슬라이더와 같은 표준 UI 요소가 하드웨어 마우스 또는 터치 상호작용과 마찬가지로 가상 커서에 응답합니다.
  • 시각적 커서 구동: 화면에서 가상 커서의 위치를 자동으로 추적하고 렌더링하는 UI Graphic (예: Image 구성요소)을 할당할 수 있습니다.

가상 마우스를 TouchSimulation과 결합

게임이 원래 터치스크린 전용으로 설계되었고 직접 터치 스크립트 또는 API를 사용하는 경우 가상 마우스는 터치스크린 기기가 아닌 마우스 기기로 등록되므로 기존 터치 감지 로직을 자동으로 트리거하지 않습니다.

기존 터치 처리 코드를 다시 작성하지 않고 게임패드 기반 커서 상호작용을 지원하려면 Unity 입력 시스템's TouchSimulation 기능을 VirtualMouseInput과 함께 사용하면 됩니다.

  • 작동 방식: TouchSimulation.Enable()을 사용하여 사용 설정하면 입력 시스템이 VirtualMouseInput에서 만든 소프트웨어 시뮬레이션 마우스를 비롯한 활성 마우스 기기의 클릭 및 포인터 이동을 시뮬레이션된 터치스크린 이벤트로 자동 변환합니다.
  • 결과 데이터 흐름: 게임패드 스틱 및 버튼 상호작용이 가상 마우스를 구동하고 TouchSimulation이 이를 단일 터치 이벤트 (Touchscreen)로 변환합니다. 기존 터치 감지 스크립트는 코드 수정 없이 이러한 이벤트를 원활하게 처리할 수 있습니다.
  • 고려사항: TouchSimulation은 단일 터치 포인터 에뮬레이션으로 제한됩니다. 게임플레이가 핀치 투 줌 또는 두 손가락 회전과 같은 복잡한 멀티터치 동작에 의존하는 경우 게임패드 컨트롤에 전용 입력 작업 바인딩을 구성해야 합니다.

전체 기술 세부정보, 속성, 사용 설명서는 공식 UnityEngine.InputSystem.UI.VirtualMouseInputUnityEngine.InputSystem.EnhancedTouch.TouchSimulation 스크립트 참조를 확인하세요.