Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자 사카

2DSprite에 라이트 효과 주기 본문

Develop/Unity

2DSprite에 라이트 효과 주기

DevSaka 2018. 1. 12. 17:46

유니티 2D도 3D처럼 라이트 효과를 줄 수 있다.


1. 새 Material을 만든다.


2. Material의 Inspector창에서 Shader부분을 Sprites/Diffuse 로 바꿔준다.


3. 자신이 라이트 효과를 주고 싶은 오브젝트에 방금 만든 Material을 넣어준다.


4. 라이트 넣어주면 끝!

 뭐 일반적으로 불이나 무언가 정적으로 있는 혹은, 탑뷰로 보여지는 그림들은 딱히 고민하지 않아도 되지만 횡스크롤로 움직이는 캐릭터에게 라이트를 넣어주다가 한가지 문제에 직면했다.


우선 텍스쳐의 용량을 줄이기 위해서 오른쪽으로 움직이는 스프라이트만 가지고 왼쪽으로 움직이는 것도 같이 구현했다. 그냥 간단하게 Y축으로 180도 회전시키는 방법을 사용했다.


하지만 캐릭터에 라이트를 넣어줄 시 오른쪽에서는 제대로 효과가 적용되는데 왼쪽으로 움직일 시에 전혀 빛을 받지 못하는 상황이 발생했다.(자식객체로. 따로 빼내도 되지만 그렇게되면 매 스테이지마다 라이트를 계속해서 생성해줘야하므로 패스하기로 했다.) 그렇다고 왼쪽으로 움직이는 스프라이트를 쓰자니 또 손이 많이 가는 것도 그래서 구글링 하다가 페북에서 해결책을 겨우 찾았다.


결론은 180도 회전이 아닌 X축 스케일에 -1을 곱해주는 방식으로 반전을 주는 것이다.


y축에 대한 180도 회전 행렬
-1 0 0
0 1 0
0 0 -1

x좌표 반전 행렬
-1 0 0
0 1 0
0 0 1
이므로

 

180도 회전을 시키면 z축까지 돌아가 버리기 때문에 노멀이 화면에서 뒤집히게 되므로. 따라서 라이팅이 달라진다. 

Comments