Unity/VR

Grab Interactable

mynote6590 2025. 4. 10. 13:31

주요 설정 설명 (실제로 자주 사용하는 것 위주로 정리)


Interaction Manager

  • 이 오브젝트를 관리하는 XR Interaction Manager를 연결합니다.
  • 대부분 자동 연결되므로 비워놔도 동작하지만, 수동 제어할 때 사용됩니다.

Interaction Layer Mask

  • 어떤 종류의 Interactor(예: 손, 레이 등)가 이 오브젝트와 상호작용 가능한지 필터링합니다.
  • 예: 손으로만 잡을 수 있게 하거나, 특정 컨트롤러만 반응하게 설정 가능.

Select Mode

  • 오브젝트를 한 명이 잡을 수 있는지 또는 여러 명이 동시에 잡을 수 있는지 설정.
    • Single: 하나의 Interactor만 선택 가능 (기본값)
    • Multiple: 여러 Interactor가 동시에 잡을 수 있음 (특수한 경우)

Movement Type

오브젝트가 손(Interactor)과 연결되는 방식

  • Instantaneous: 즉시 붙음 (이질감은 있으나 직관적)
  • Kinematic: 자연스럽게 손을 따라가지만 물리 충돌이 거의 없음
  • Velocity Tracking: 진짜로 물리적으로 손을 따라가는 느낌 (현실감 ↑, 설정 어려움 ↑)

추천: 대부분은 Instantaneous 혹은 Kinematic을 사용.


Track Position / Rotation / Scale

  • 어떤 속성(위치/회전/크기)을 손의 움직임과 함께 따라갈지 여부 설정
  • 일반적으로 Position, Rotation은 체크
  • Scale은 퍼즐처럼 크기가 변하는 물체에서만 필요

Throw On Detach

  • 사용자가 손을 놓았을 때 던지는 효과를 줄지 여부
  • 체크 시 → 물리 기반으로 던지기 가능 (Throw)
  • 해제 시 → 손을 놓아도 물체는 제자리에 멈춤

하위 옵션들:

  • Throw Smoothing Duration: 던질 때 속도 적용의 부드러움 (0.25초 기본)
  • Throw Velocity Scale: 던지는 힘의 크기 조절 (1.5이면 손의 속도 × 1.5)
  • Throw Angular Velocity: 회전력 조절

💡 실제 팁: 1.0~2.0 사이에서 튜닝해보며 가장 현실감 있는 값을 찾는 것이 좋습니다.


Attach Transform

  • 오브젝트를 잡을 때, 손의 어디에 위치할지 정의하는 기준점
  • 예: 칼의 손잡이 쪽에 빈 오브젝트(Transform)를 만들고 이곳에 지정하면, 손이 칼자루를 잡는 식으로 자연스럽게 위치함

Secondary Attach Transform

  • 양손 잡기 또는 보조 위치용
  • 예: 활 쏘기처럼 주손은 활 몸체, 부손은 활줄을 잡는 구조

Use Dynamic Attach

  • 오브젝트를 잡을 때 자동으로 잡은 위치에 맞춰 붙을지 여부
  • 체크 시 → 손이 닿은 곳 기준으로 붙음
  • 해제 시 → 항상 Attach Transform 기준으로 붙음

Attach Ease In Time

  • 오브젝트가 손으로 "부드럽게 이동"하는 시간
  • 0으로 설정하면 바로 붙고, 0.1~0.3으로 하면 조금 더 자연스럽게 딸려옴

📦 그 외 설정 (잘 안 쓰지만 알고 있으면 좋음)

  • Force Gravity On Detach: 놓았을 때 강제로 중력 적용 (RigidBody와 연동)
  • Attach Point Compatibility: 새로운 버전에서 추천되는 포인트 방식 자동 설정
  • Gaze Configuration: 시선 기반 선택이 필요한 경우에만 사용 (HoloLens 등)

🧪 실전에서 조합 예시

1. 던질 수 있는 공 만들기

  • XR Grab Interactable 추가
  • Throw On Detach 활성화
  • Throw Velocity Scale → 1.8
  • Rigidbody 추가 + Use Gravity 활성화

2. 자연스러운 손잡이 잡기

  • 칼 모델의 손잡이 위치에 빈 GameObject (Handle) 생성
  • 이 오브젝트를 Attach Transform에 지정
  • Track Position, Track Rotation 체크