슬라이더를 만들어보자. 이 슬라이더로 월드 빛의 밝기를 조절하게 할 것이다.-
먼저 canvas를 만들어주자. 이전 강좌:https://gall.dcinside.com/m/vr/313737
그 후 canvas에 vrc ui shape컴포넌트를 추가해주자.
UI에 슬라이더를 추가해준다.
canvas크기와 슬라이더 크기가 맞아야 클릭이 가능해지니 잘 조절하자. (단축키 T)
slider를 클릭하고 slider컴포넌트의 On value Changed에서 +를 누르고, 2번 동그라미 쪽에 밝기를 조절할 빛을 넣자.
No Function쪽을 Light.intensity로 바꾸면 슬라이더에 따라서 밝기가 달라진다!.
슬라이더는 최대가 1이고 최소가 0인데, 컴포넌트의 max value와 min value로 조절할 수 있다..
이 방식으로 간단하게 빛 밝기를 조절할 수 있지만, 대부분의 월드는 최적화를 위해서 라이트를 베이크했을 것이다.
즉 이 방법으로는 월드 전체의 밝기를 조절하기 힘들다. 따라서 스크린 쉐이더를 이용해 화면의 밝기를 조절해야할 것이다.
우선 스크린 쉐이더를 하나 받자. https://gall.dcinside.com/m/vr/97291
큐브를 하나 만들고, 메테리얼을 하나 만들고, 그 메테리얼의 쉐이더를 스크린 쉐이더로 하고 아무 검은색 이미지를 넣는다.
큐브에 메테리얼을 씌우면
검은색 이미지가 화면을 덮는다. 메테리얼의 Transparency를 1로 만들어주자.
충돌 체크를 하진 않을거니까 콜라이더도 빼준다.
참고로 큐브가 화면에 보여야 이렇게 덮어 씌워지니 밝기 조절용으로 쓸 거면 큐브를 엄청나게 크게 만들어야한다.
큐브에 애니메이션을 하나 만들자.
Add Property로 Mesh Renderer - Material._Transparency를 추가하자.
0초에는 transparency값을 1로 했고, 1초에는 transparency값을 0으로 했다.
즉 1초가 될 수록 화면이 검게 변할 것이다.
여기서 만든 애니메이션이 Loop되면 안되니 Loop Time해제
애니메이터가 자동으로 시작되서도 안되니 체크 해제
다시 슬라이더로 돌아가서 위 사진대로 한다.
1.Max Value를 0.99로해준다. 슬라이더를 조절할 때 애니메이션이 min value초~max value초가 되는데, 1일 경우 다시 처음으로 돌아간다. 따라서 어두워지지 않는다.
2.큐브를 넣고 Animator.Rebind를 실행하게 해준다. 애니메이터를 초기화 하는 함수라고 한다.
3.큐브를 넣고 Animator.Update를 실행하게 해준다. 이는 슬라이더 값과 같은 시간만큼 애니메이션을 실행시키게 한다.
이러면 슬라이더에 따라서 월드가 밝아지고 어두워 질 것이다.
--팁--
되도록 max value는 0.99까지는 하지말자. 완전히 어두워지면 슬라이더를 찾을 수도 없으니까.
만약 0.5까지 했을 때 많이 어두워지고 싶으면 애니메이션 값을 조절하면 된다.
끗