어제 만든 gun 오브젝트의 XR Grab Interactable컴포넌트에 Gaze Configuration의 MovementType을 살펴보자
Velocity Tracking, Kinematic, Instantaneous 세가지 종류가있다.
Velocity Tracking은 오브젝트가 물리 엔진의 영향을 받아 움직이는 방식이다. 오브젝트의 위치를 직접 설정하는 대신, 물리 엔진을 통해 속도와 힘을 적용하여 움직인다. 물리엔진을 따르기 때문에 가장 무겁다.
Instantaneous는 즉각적인 위치와 회전 변화를 오브젝트에 적용하는 방식이다. 이 방법은 오브젝트의 물리적 속성에 관계없이 위치와 회전을 즉시 변경합니다. Velocity Tracking보다는 가볍다. 정확한 위치제어가 필요할 때 주로 사용한다. 오브젝트 간의 터널링이 발생한다.
.
Kinematic은 Rigidbody를 통해 움직이며 물리적으로 자연스러운 움직임을 나타낼때 설정해준다. 오브젝트가 물리 엔진의 영향을 받지 않지만, 다른 물리적 오브젝트와의 충돌은 감지할 수 있다. 이 방법은 오브젝트가 직접적으로 이동하지만, 속도와 힘 같은 물리적 속성은 계산되지 않는다. Moving Flatform이나 엘리베이터같은 환경요소에 자주 사용한다. Instantenous보다 무겁지만 Velocity Tracking보다 가볍다.
Throw Smoothing
플레이어의 손동작의 속도와 위치를 계산하여 그에 따라 물체가 날아가도록 설정하는 값이다. 수치가 커질수록 물체가 잘 안날아가게 된다.
Throw Velocity Scale
플레이어가 물건을 놓았을 때 손동작의 속도와 위치를 계산하여 설정해둔 배수로 날아가게 만든다. 수치가 커질수록 멀리 날아간다.
Hover(오브젝트 부착)
큐브를 하나 만들어주고 그 자식에 구를 만들어서 넣어준다. 그리고 구에 material을 하나 만들어서 넣어주고, material을 복사한 후, 초록색과 빨간색으로 색상을 바꾸어준다. 구의 이름은 Socket으로 바꾸어준다.(이 구가 아이템을 부착할 위치가 될 것이다.)
구에 XR Socket Interactor를 넣어주고, Attatch Transfrom에 자기자신을 넣어준 다음, Hover mesh Material과 Can't Hover Mesh Material에 각각 초록색과 빨간색 material을 넣어준다.
그다음 Interaction Layer Mask를 클릭, Add layer를 하고 SocketPossible이라는 레이어를 추가해준다.
마지막으로 Hover를 적용시킬 오브젝트의 XR Grab Interactable의 Interaction Layer Mask에 Socket Possible 레이어를 체크해주면 해당 오브젝트를 Socket에 부착시킬 수 있다. 꼭 이 처리를 해주어야 의도하지 않은 오브젝트가 소켓에 부착되는것을 막을 수 있다.
오브젝트를 부착가능할때 초록색 으로 표시가 나온다. 이미 물오브젝트가 부착되어있는곳에 다른 오브젝트를 부착시키려고 하면 빨간색으로 불가능하다는 표시가 나온다.
물체를 원하는 방향으로 부착을 하고싶으면 Socket의 Local pivot과, 오브젝트의 Local pivot의 방향을 잘 맞추어주어야한다.
'Unity' 카테고리의 다른 글
2024/07/03 VR 기초 (Hinge Joint, Fixed Joint) (0) | 2024.07.03 |
---|---|
2024/06/24 Unity 코딩 응용(아이템 들었다 놓기, 터뜨리기) (0) | 2024.06.24 |
2024/06/20 Unity VR 기초 (0) | 2024.06.20 |
2024/06/11 Unity VFX (0) | 2024.06.11 |
Unity 물 shader (0) | 2024.05.17 |