a

이런 식으로 다른 사람이 접촉하면 배에 멍이 들게 만드는 방법을 공유해 볼까 해.
꼭 배빵이 아니더라도 다양한 방식으로 활용 가능하니까 알아두면 좋을 것 같아.
* 준비물
- 배빵 텍스쳐가 들어간 마테리얼
- 일반 마테리얼
- 배빵이 작동 시 함께 나올 사운드
그러니까 마테리얼이 총 2개 필요하겠지?

그럼 우선 아바타의 Hips 혹은 Spine에 빈 오브젝트를 2개 만들어줘. 나는 배빵과 치유로 나눠 뒀어.
(배빵 OnOff라는 상위 폴더가 있는데, 이건 배빵 기능 자체를 ONOFF하기 위해 만들어 둔 거니까 무시해도 좋아.)
만들었으면 해당 오브젝트의 Inspector 창에서 Add Component 버튼을 눌러 VRC Contact Receiver를 생성해.
* 리시버의 기능
- Shape : 리시버의 크기를 정하는 거야. Gizmos를 활성화한 상태에서 Shape 크기를 늘려 보면 파란색 원이 보일 거야.
그걸 배 위치에 옮겨두고 적당한 사이즈로 커스터마징하도록 해.
- Filtering : 리시버에 접촉 가능한 대상을 의미해. Self를 켜두면 자기 자신, Others를 켜두면 다른 사람이 해당 리시버와 상호작용을 할 수 있어.
우리는 둘 다 체크해 둬야겠지?
- Collision Tags : 해당 리시버에 접촉하는 Sender를 제한하는 기능이야. 센더는 직접 만들 수도 있고, VRC에서 기본적으로 제공하는 센더를 사용할 수도 있어.
제공되는 샌더는 머리, 손, 발, 몸통 정도야.
(인게임 내에서 리시버 보기를 활성하면 어느 부위에 샌더가 활성화 되었는지 노란색으로 표시가 되니까 참고 바라)
여기에 사진처럼 Hand와 Foot을 설정해 두면 손과 발이 닿았을 때 리시버가 작동할 거야.
- Receiver Type : 리시버 타입에는 Constant, On Enter, Proximity가 있어.
각각의 기능은 https://docs.vrchat.com/docs/contacts#VRCContactSender에 자세하게 설명이 되어 있어.
우리는 속도 제한을 둘 거기 때문에 On Enter를 사용할 거야.

사진처럼 리시버 타입을 On Enter에 두고 원하는 이름의 파라메터명을 정해.
나는 임의로 배빵_리시버라고 적어 뒀어.
Min Velocity는 리시버가 반응하는 최소 속도야. 2만큼의 속도로 리시버를 때리면 리시버가 작동하는 방식이야.

치유 리시버도 같은 방법으로 같은 방식으로 구성을 해줘. 위치 맞춰두로 오브젝트 복붙하는 편이 빠를 거야.
이건 배빵을 원래대로 되돌리기 위해 사용하는 리시버야. 단, 여기서는 On Enter가 아니라 Constant를 사용해.
Constant는 간단히 설명해서 리시버를 만지면 바로 작동을 하는 타입이야.
배빵 상태를 복구하기만 할 거니까 속도 제한을 걸 필요가 없기 때문에 Constant를 썼어.

리시버를 모두 만들었으면 하이어라키에서 배빵 폴더 하위에 게임오브젝트를 만들고 inspector 쪽에서 Audio Source를 생성해 줘.
배빵이 작동하면 퍽 소리가 나게 하는 기능이야.
설정은 그냥 저렇게 하면 돼.
(간단하게 설명하면 On Awake는 해당 오브젝트가 활성화되면 작동하는 거고 Spatial Blend는 사운드의 타입, Min, Max는 소리가 들리는 최소, 최대 범위야.)

여기까지 했으면 다음에는 애니메이션을 만들어 보자.
나는 멍듬, 일반 두 개를 준비해 두고 애니메이션을 녹화할 거야.

우선 간단하게 마테리얼 부터 교체하자.
애니메이션을 누른 상태에서 마테리얼을 드래그해서 아바타의 바디에 올려 놓으면 돼.
해당 GIF는 일반 상태에서 멍든 상태로 변경하는 장면이야.
여기서 주의할 점은, 멍든 상태에서 일반 상태로 교체할 때는 아바타 기본 마테리얼을 멍든 상태로 두고 일반 상태로 교체 해야 한다는 거야.


각각 일반 애니메이션, 배빵 애니메이션의 최종 구성이야.
(배빵 리시버가 좀 더 복잡한 이유는 표정을 함께 찍어줬기 때문)
마테리얼을 교체해 주고 옷장을 찍듯이 아까 만든 리시버를 ONOFF해주면 돼.
배빵이 작동하면 배빵 리시버가 꺼지고 치유 리시버가 켜지면서 그걸 다시 만지면 원래 상태로 돌아가는 식이야.
배빵이 동작하면 사운드가 함께 켜져야 하니까 아까 만든 게임 오브젝트에서 오디오 소스를 함께 키고 꺼줘야겠지?
모르겠으면 대강 따라해.

여기까지 왔으면 끝난 거나 다름 없어. 우선 아바타 PARAMETER에서 배빵ONOFF(이름은 상관 없음)을 만든 다음 일반적인 토글 레이어를 구성해줘.
단, 리시버로 작동하니까 메뉴는 만들지 않을 거야.

이런 식으로 구성하면 돼.
배빵ONOFF가 True면 배빵 애니메이션 동작, False면 일반 애니메이션이 동작하는 식으로 구성하면 돼.
이건 설명 안 해도 되겠지?

그리고 FX Parameter에 아까 리시버에 만들었던 Parameter명을 적어줘.
* 배빵_리시버, 치유_리시버

Collision Tags 아래 있는 Parameter명을 말하는 거니까 헷갈리지 마.


이제 파라메터를 변환하는 FX를 만들 차례야.
다음과 같이 FX를 구성해줘.
트렌지션 설정 값은 위의 사진대로 해주면 돼.


그리고 State를 눌러서 Avatar Parameter Driver를 만들어줘.
배빵은 Value 체크, 일반은 Value를 꺼주면 돼.
이러면 해당 리시버가 작동하면서 아까 만들었던 배빵 ONOFF FX레이어에 각각 True, False 값을 보내주면서 해당 FX가 작동하게 돼.
번거롭지만 이렇게 해야 하는 이유는 Reciever는 특성 상 Sender가 Reciever에서 벗어나면 값이 강제로 0이 되어버리기 때문이야.
애니메이션을 고정 시키기 위해서는 꼭 Parameter Driver를 써야 한다는 것만 기억해 둬.
이쪽 부분은 갤시트 터치 옷장 만들기에 설명돼 있던 것 같으니까 그걸 참고 바라.
****
배빵 기능 자체를 끄고 켜고 싶으면 알아서 다시 기능 ONOFF를 만들어주면 끝!
나는 이거 만들고 하루 종일 뇌명팔괴 지건 람각 맞고 다녀.
너희들도 꼭 배빵 넣고 즐거운 VR 라이프를 즐기렴!