유니티 VR 샌드백을 만들어보자!

예전부터 샌드백을 엄청엄청엄청 만들어 보고 싶었습니다...

샌드백 관련 영상과 기술들을 찾아봤었지만 여태껏 찾지 못하다가, AutoHand라는 에셋 안에 샌드백이 있어서 너무나 행복했고 바로 알아보았습니다.

 

저는 당연히 코드를 직접 짜야할 줄 알았으나, Configure Joint 하나로 해결이 된다는 점에서 너무 신기했습니다!

 

진짜.....이 글을 보는 여러분들은 행운...저는 진짜 오랫동안 찾음 ㅠㅠ

퍽퍽


구조

구조

 

구조는 정해진 틀이 없습니다. 하지만 기본적인 샌드백 뼈대는 설치하시면 됩니다.

저는 허수아비 타입의 샌드백 구조를 만들어 보았습니다.

 


Configure Joint 

분석(최상위 부모 오브젝트) / 분석(Head 오브젝트)

 

Auto Hand 에셋에 설치되어 있는 샌드백 구조를 살펴보았을 때, 위 빨간색 박스친 부분만 사용한 것을 확인했습니다.

그 외에는 기본적으로 Default세팅이 되어 있었습니다.

Connected Body 조인트에 연결된 다른 리지드바디 오브젝트입니다. 이를 None 으로 설정하면 해당 조인트가 다른 리지드바디가 아닌 공간상의 고정된 포지션에 연결됨을 의미합니다.
Anchor 조인트의 중심이 정의되는 포인트입니다. 모든 물리 기반 시뮬레이션에서는 계산 시 이 포인트를 중심으로 삼습니다.
Axis 물리 시뮬레이션을 기반으로 한 오브젝트의 자연스러운 회전을 정의하는 로컬 축입니다.

 

X, Y, Z Motion X축, Y축, Z축 이동을 자유롭고, 완전히 잠기고, 또는 제한된 합니다.
Angular X, Y, Z Motion X축, Y축, Z축 회전을 Free, 완전히 Locked, 또는 Limited 로 설정합니다.

 

Rotation Drive Mode 오브젝트가 타겟 방향으로 회전할 수 있도록 구동력이 오브젝트에 적용되는 방식을 의미합니다. 이 모드가 X and YZ 로 설정될 경우 아래 설명의 Angular X/YZ Drive 에서 정의된 것처럼 토크는 이 세 축에 적용됩니다. Slerp 모드를 사용하면 Slerp Drive 프로퍼티가 드라이브 토크를 결정합니다.
Angular X
Drive
로컬 X축 주변에서 조인트가 드라이브 토크에 의해 회전되는 방식을 정의합니다. 앞서 설명한 Rotation Drive Mode 프로퍼티가 X & YZ 로 설정될 경우에만 이 기능이 사용됩니다.
Positio  n   
Spring  
타겟 포지션을 향해 조인트를 회전시키는 스프링 토크를 의미합니다. 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
Position
Damper
조인트 움직임 속도에 비례하는 스프링 토크 감소입니다. 값을 0보다 크게 설정하면 조인트가 진동을 “감소”시킵니다. 그렇지 않을 경우 조인트가 끝없이 진동하게 됩니다. 이 기능은 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 경우에만 사용됩니다.
Maximum Force 타겟 속도를 목표로 조인트를 가속하는 토크입니다. 드라이브 모드가 Velocity 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
Angular YZDrive 이것은 앞서 설명한 Angular X 드라이브와 유사하지만 관절의 Y축과 Z축에 적용됩니다. Slerp Drive 조인트가 모든 로컬 축을 중심으로 드라이브 토크에 의해 회전되는 방식을 정의합니다. 앞서 설명한 Rotation Drive Mode프로퍼티가 Slerp 로 설정된 경우에만 이 기능이 사용됩니다.

 

Break Force 이 값보다 큰 힘으로 조인트를 제한 조건 이상의 힘으로 밀면 조인트는 영구적으로 “부러지고” 삭제됩니다.
Break Torque 이 값보다 큰 토크로 조인트를 제한 조건 이상의 토크로 회전시키면 조인트는 영구적으로 “부러지고” 삭제됩니다.
Enable Collision 조인트가 있는 오브젝트와 연결된 오브젝트끼리의 충돌을 가능하게 해줍니다.

 


플레이어 세팅

양 손에 콜라이더가 준비되어 있으면 됩니다.