본문 바로가기
웅진씽크빅 게임 개발 챌린지 일기

개발일지 #5 빛이 있으면 그림자도 있는법

by 억만장작 2022. 9. 2.

잡소리

밖에 주룩주룩 비가 내리는 것을 보니 대창 덮밥이 먹고 싶다. 2년 전 즈음 개발을 공부하겠다고 상경을 했었을 때 함께 공부하던 동료들과 역삼역과 강남역 사이쯔음에 있는 대창 덮밥집을 갔었는데 그 맛이 잊히지 않는다. 식당 이름은 대낚 식당이다.

기회가 있으면 또 가고 싶은 그맛!

개발일지 #5 그림자 구현

왜?

지금 만들어진 게임을 보면 너무 밋밋한 감이 없잖아 있다. 물론 사운드, 이펙트 아무것도 추가되지 않은 상태라 그런 것도 있지만 우리 게임은 아이들도 즐길 수 있을 수준의 약간의 스릴 또한 추구하기 때문에 어떤 부분을 추가하면 좋을지 생각을 많이 했다. 결국 생각해낸 기능은 그림자이다. 그림자를 통해 적이 잘 안 보이고 갑자기 튀어나오는 적을 구현 가능하기 때문에 꼭 필요하다고 생각했다.

많은 게임에서 그림자를 사용한다.

구현

그림자와 같은 기능을 구현하기 위해서는 Unity의 URP(Universal Render Pipeline)를 사용해야 한다. 기본적으로 좋은 그래픽을 적용시키기 위해 써야 하는 거라고 생각하면 된다. 

https://mrbinggrae.tistory.com/243

 

Universal Render Pipeline 대충이라도 알고 쓰자

* 내가 그래픽 작업자도 아니고 배운다고 써 먹을 수도 없을 거 같아서 딱 필요한 부분만 공부한 내용을 정리해놨다. (특히 까막눈이라서 값이 변경되어도 뭐가 다른지 차이를 모르겠다) 유니티

mrbinggrae.tistory.com

이 글을 보고 적당히 이해했다.

 

그리고 우리 player에게 빛을 주자!

왼쪽이 빛 적용 전, 오른쪽이 빛 적용 후

난파된 우주선의 실내의 느낌을 주기 위해서 Global Light의 밝기를 낮춰준다. Global Light는 간단하게 화면 전체의 밝기라고 생각하면 좋을 거 같다.

왼쪽이 글로벌 밝기 높은 상태, 오른쪽이 글로벌 밝기 낮춘 상태

이렇게만 적용하면 벽 뒤의 적도 환하게 비치는 문제가 있다. 나는 벽 뒤는 그림자가 생기도록 하고 싶다.

그림자를 적용시키기 위해서 ShadowCaster 2D를 사용하자. 유니티에서 그림자를 구현할 때 사용하는 컴포넌트다.

요론거 하나 추가하고 라인만 따면 끝!

이 친구를 넣기만 한다고 자동으로 적용되는 게 아니고 빛이 통과 못하는 부분을 내가 하나하나 다 따줘야 한다... 이게 생각보다 노가다더라..

간단해 보이지만 열심히 땄다 ㅎㅎ

그리고 마지막으로 멋있게 딴 그림자를 한번 살펴보자~!

마무으리

 그림자를 구현하는 것 자체는 크게 어렵지 않다. 나의 경우에는 초반에 URP를 적용하는 것에서 고통을 좀 받았다. 그래도 다른 어려운 기능을 구현하는 것보다는 쉽더라. 여기서 주의할 점은 그림자는 생각보다 무겁다는 것이다. 여러 개의 빛을 하나의 오브젝트에 비춰서 여러 그림자가 생기게 하려고 하면 몇몇 그림자가 안 생기거나 하는 문제가 생길 수 있다. 이런 점만 주의해서 사용하도록 하자. 메쓰 크래프트에서는 플레이어에게만 빛이 있기 때문에 크게 문제 되는 부분은 아닌 거 같다. 후에 아이템이나 상호작용 오브젝트에는 빛을 줘야 하나... 그건 개발하면서 생각해봐야겠다.

 

댓글