절대적인건 아님. 더 좋은 방법이 있을 수 도 있어.
신사의 경우에는 사람 왕래가 잦은 편이고, 거울앞에서 노는사람과 서로 얼굴을 마주보면서 대화하는 사람이 꽤 다양하게 있어
일단 한 인스턴스당 접속자수가 꽤 있다보니, 거울을 최적화 할 방법을 생각해보려고 머리 굴리다가 이런식으로 만들게 됐어
위에서도 적었지만, 누군가가 쓴 글을 읽고 만든게 아니라 내가 내 좆대로 구성한 트리거라서 더 편하고 좋은 방법이 있을 수 도 있겠다
최종적인 형태는, 거울 버튼이 ON 되어 있을 때, 일정 거리를 벗어나면 거울이 사라졌다가 다시 다가오면 생성되는 형태로
장점은 한번 ON 해놓으면 다른 위치로 잠깐 이동하더라도 다시 버튼을 만질 필요가 없다라는거랑 불필요한 랙을 자동으로 차단해서 최적화에 확실히 도움이 된다는거
설명은 신사에 배치된 실제 거울로 하니까, 아마 신사에 방문해본 사람이라면 어떤형태로 결과가 나타나는지는 알거야
1. 거울배치. 무거운거울, 가벼운거울 2개를 서로 겹쳐놨어. 트리거를 만지면서, 2개를 다 킬 경우 무조건 가벼운거울만 켜지게 만들거야
거울배치가 완료됐다면, OFF해주자. 디폴트로는 거울이 꺼져있어야하니까
2. 바닥에 밟아도 표시안 날정도로 엄청 얇은 큐브를 하나 만들자
트리거는 보다시피, [OnAvatarHit]-[로컬]- [가벼운거울/무거운거울 2개 오브젝트에 대한] - [false] 임
false 값으로 인해서, 이제 이 큐브 콜라이더에 아바타가 닿으면 1번에서 설치한 거울 2개에 대해서 무조건 꺼지는 트리거가 됐음
3. 그 위에 또 얇게 큐브 하나를 펴주자
보기 편하게 하려고 2번에서 만든 큐브는 잠시 가렸음
요거는 무거운 거울용 큐브고, 트리거에는 동일하지만, 무거운거울 true, 가벼운거울 false로 했음
이제 이 큐브에 아바타가 닿으면 무거운거울은 켜지고, 가벼운거울은 꺼지게 됐음
4. 그 위에 또 얇게 큐브 하나를 펴주자
요거는 가벼운 거울용 큐브고, 트리거에는 동일하지만, 가벼운거울 true, 무거운거울 false로 했음
반대로 이 큐브에는 아바타가 닿으면 가벼운거울이 켜지고, 무거운거울이 꺼지게 됐음
5. 대충 이런 느낌으로 총 3개 큐브가 쌓여있어
가장 아래의 넓은게 무조건 꺼지는거
그위에 무거운거울 ON, 가벼운거울 OFF
그위에 가벼운거울 ON, 무거운거울 OFF
이렇게 돼서, 가벼운거울과 무거운거울의 버튼을 2개 다 누르게 되면, 가장 위에있는 가벼운거울ON/무거운거울OFF에만 아바타가 닿게 되니까 자동적으로
무거운거울은 꺼지고, 가벼운거울만 남게 됌
여기서 이제 만져야 할 것
1) 3개 큐브에 대한 메쉬랜더러 OFF - 보기 흉하니까
2) 제일 아래 큰 큐브를 제외한 나머지 2개 큐브에 대한 OFF(체크해제) - 실질적으로 이게 생겼다 없어졌다 하면서 거울을 컨트롤하게 되니까, 디폴트는 꺼져있어야겠지
6. 거울 스위치에 연결
신사의 경우엔 UI를 쓰고있지만, 이건 그냥 VRC트리거를 사용해도 문제 없어. 제작자 취향인듯
스위치는 각각 직접적으로 거울로 연결하는 것이 아니라, 바닥에 깔린 큐브로 연결해줌
이러면 신사 거울이 완성이 됀다
결과적으로, 사용자가 직접 건드리지 않고 자리를 떠나더라도 랙 유발 요인을 자동으로 제거해서 최적화에 도움이 됀다
트리거를 한번 꼬아서, [버튼-콜라이더소환-닿으면켜짐/범위 밖으로 가면 알아서 false콜라이더에 닿아서 자동으로 꺼짐] 이라는 결과물이 나옴
거기에 부가적으로 2개를 전부 켜더라도 실제로 콜라이더는 가벼운거울ON/무거운거울OFF에만 닿게 되니까 마찬가지로 사용자가 실수하더라도 월드 자체에서 2개가 전부 켜진다 라는 거대한 랙 유발 요인을 알아서 차단함
마지막으로, 이거는 절대적인 게 아니야. 훨씬 더 좋은 방법이 있다면 나한테도 좀 알려주면 고맙겠어