✅ 이번주 백로그
1. 귀신 백과사전 사전 준비
2. 백과사전 연출 구현
3. 귀신과 매핑되는 무구 로직 구현하기
- 무당 방울 (특정 아이템 위치에 따라 볼륨 조절)
- 꽃신 (빙의용 > 거리에 따라 볼륨 조절 & 걷는 애니메이션 실행)
- 복숭아가지 (사라지기 / 연출)
사실 팀 프로젝트는 저번주부터 시작되었는데
내가 가장 사랑하고 아끼고 평생을 동생이라고 생각하며 지내왔던 강아지가 너무 아파하다가 결국 별이 되어버려서
정말 하루종일 울고 간호하고 붙어있느라 팀 프로젝트를 신경 쓸 겨를이 없었다.
정말 감사하게도 팀원분들이 내 상황을 이해해주셨고 오히려 지금 강아지랑 시간 안 보내고 작업하고 있으면 마음이 안 좋을 것 같다 말씀해주셔서 진짜 너무 뭉클했고 감사했다.
덕분에 강아지 장례도 잘 치루고 집도 치우고.. 가족들이랑 충분히 슬퍼하는 시간 가질 수 있었다.
솔직히 팀원분들의 배려 덕분에 금방 일어설 수 있었던 것 같다! 이렇게 잘해주시는데 내가 민폐끼치면 안되쥐!! ㅠ0ㅠ
암튼 이제 이번주 작업 내용을 정리해보겠다!
1. 귀신/무구 백과사전 만들기
우리는 한국 전통 귀신을 모티브로 하는 공포 게임이니까
한국 전통 느낌의 사전, 대대손손 내려오는 족보같은 느낌으로 백과사전을 만들고 싶었다.

미리캔버스를 활용해서 최대한 족보같이 꾸며보았다.

그리고 귀신 도감에 어울리도록 귀신/무구 그림을 추가하는 작업을 진행했는데
정말 옛날 전통 화가가 그린 느낌처럼 그리기 위해서 AI를 엄청 괴롭혔다..
아직도 마음에 들진 않지만 정말 뻥안치고 그 느린 AI로 그림 50장은 그린 것 같다..
월요일, 화요일은 AI로 그림 그리는데만 정말 시간이 엄청 소요돼서 진행이 좀 많이 느렸었다 ㅠ
2. 백과사전 연출 / 플레이어 로직과 연동
백과사전 이미지들을 많이 만들어냈으니까 이제 정말 책처럼 상호작용하는 로직을 만들어 줄 차례이다.
Book - Page Curl | 애니메이션 도구 | Unity Asset Store
Use the Book - Page Curl tool from Abdullah Aldandarawy on your next project. Find this & more animation tools on the Unity Asset Store.
assetstore.unity.com
찾아보니 책을 넘겨주는 애니메이션 에셋이 이미 존재하길래 이 에셋을 활용해주었다.

처음에 백과사전 연출을 구현할 때
마인크래프트 인챈트처럼 책이 둥둥 떠있고
이 공간 안에 들어오면 책을 넘길 수 있도록 하는 로직을 구상하였었다.
그런데 팀장님께서 플레이어가 직접 들고다니면 좋을 것 같다 말씀하셔서 방향을 바꿔주었다!

다른 팀원분께서 플레이어 움직임 관련 로직을 이미 구현해주셨기에
나는 오로지 책 연출만 신경쓰면 됐었다.
덕분에 편하게 내 아이디어를 마음껏 담아낼 수 있었다!
Book Page Curl 에셋은 마우스 드래그앤 드롭으로 책 페이지를 넘길 수 있도록 구현되어 있었는데
이 작업이 좀 많이 번거롭고 솔직히 게임하는 입장에서는 너무 구데기같아서 마우스 휠로 페이지가 넘어가도록 로직을 조금 수정해주었다.

ㅎㅎㅎ 솔직히 Peak 게임에서 인상깊었던 부분이라 뱉겨오고 싶었돠..ㅎ
peak에서는 이 책마저도 멀티가 연동되어서 다른 사람이 봤을 때도 책 페이지가 넘어가는 게 보이던데
우리 팀플도 나중에 멀티까지 구현이되면 책도 멀티가 되도록 바꿔보려고 한다!
그리고 Canvas가 나타날 때도 약간의 애니메이션을 줘서 더 생동감 있게 바꿔줄 예정이다.
우선은 다른 로직 구현이 더 급해서 디테일 작업은 여유 있을때..!!
3. 무구 로직
우리 게임에는 여러 귀신이 존재하고 그 귀신에 맞는 아이템들이 존재한다.
그래서 맵에 매칭된 귀신이 있는 경우에만 해당 아이템 로직이 실행되도록 스크립트를 작성해야했다.
1. 무당 방울
무당 방울은 맵에 배치된 귀신 아이템을 찾는데 사용된다.
그래서 해당 아이템의 거리에 따라 방울 소리의 볼륨을 다르게해주는 로직을 구현해 주었다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
유니티 에디터에서는 소리가 좀 명확하게 차이가 나는데
영상으로 담아내니까 소리 차이가 비슷비슷하게 나온다.. 나중에 빌드했을 때도 이러면 어떡하지? 약간 불안하다
2. 꽃신
귀신 중에 빙의가 가능한 귀신은 꽃신을 조종할 수가 있다.
그래서 중간중간 랜덤한 시간, 랜덤한 위치로 꽃신이 맵 여기저기를 돌아다닐 수 있도록 구현해주었다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
꽃신도 거리에 따라서 발자국 소리의 크기를 다르게 해주었는데
티가 좀 많이 안 나서 아쉽다..ㅠ
3. 복숭아나무 가지
귀신 중에는 복숭아 알러지가 있는 귀신이 있다.
그래서 복숭아 가지를 맵에 설치하면 귀신이 이 복숭아나무 가지를 없애는 설정을 해주었다.

이전 강의에서 셰이더를 활용해서 오브젝트가 사라지는 로직을 구현한 적이 있었다.
그 예제를 활용해보려고 나도 셰이더 효과를 줘보자고 큰맘 먹고! 로직을 구현하고 있었으나
[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(97일차) - [3D 게임] Enemy 사망 효과 / Character Joint,
✅ 오늘의 학습 목표1. Enemy 사망 효과 처리- Character Joint- Ragdoll- MaterialPropertyBlock2. Hp bar 수정1. Character JointCharacter Joint는 Unity의 물리 기반 조인트 중 하나로두 개의 Rigidbody를 관절처럼 연결해서
toxicbunny.tistory.com
이때 사용한 셰이더는 빌트인 셰이더였던 것..
우리 프로젝트는 URP 프로젝트라 이 셰이더 호환 자체가 안되는 문제점이 있었다.
URP Dissolve 2020 | 시각 효과 셰이더 | Unity Asset Store
Add depth to your next project with URP Dissolve 2020 from NOTT. Find this & more 시각 효과 셰이더 on the Unity Asset Store.
assetstore.unity.com
그래서 URP에서 사용할 수 있는 셰이더 에셋을 찾아서 다운로드 받아주었다.

그럼 이렇게 Shader Graph가 있는데
솔직히 아직도 잘은 모르겠지만ㄷㄷ 대충 느낌이 이거다 싶어서
var propertyBlock = new MaterialPropertyBlock();
peachBranch.GetPropertyBlock(propertyBlock);
var value = 0f;
while (value < 1f)
{
value += Time.deltaTime;
propertyBlock.SetFloat("_Dissolve", value);
peachBranch.SetPropertyBlock(propertyBlock);
yield return null;
}
SetFloat 함수 호출 할 때 파라미터를 그래프 탭에서 보이는 파라미터명으로 변경해주었더니 잘 적용이 되었다.

그런데 문제점은 머테리얼이 자꾸 반쯤 잘려있다는 것..
에셋 자체의 머테리얼이 반쯤 잘려있거나 이미 송송 구멍이 뚫린 머테리얼뿐이었어서
내 오브젝트에 적용을 하면 사라지는 로직이 실행되기도 전에 이미 저렇게 구멍이 송송 뚫려있었다.
그래서 셰이더 그래프 창 안에서 이것저것 옵션 값도 바꿔보고..
머테리얼 설정도 이것저것 만져보면서 해결할 수 있었다.
그런데 막상 해결하고 보니 정말 간단한 문제였다는 것.. 역시 지식이 있어야한다 ㅠㅠ