승쨩개발공부
[Unity3D] 리스크오브레인2(Risk Of Rain2) 모작 본문
해상도,전체화면은 녹화시 설정하면 녹화가 꺼져 보여줄수가 없었다
로딩화면은 일부러 Delay를 줘서 느리게 설정했다
1 어려웠던점
에임 애니메이션
플레이어와 몬스터에 Horizontal Vertical 에니메이션 들이 있었는데 각 60프레임 이였다.
IK로 해결하려고 했지만 Born재질이 고무처럼 모델이 늘어나기에 IK를 사용할수가없었다 (플레이어는 머리 팔 어꺠 등 상채가 전반적으로 각각 다르게 움직임) 이런걸 줄려면 어떻게 해야할까 고민을 참 많이했었다 CP 카테코리에 써놨었는데
결국 Horizontal과 Vertical을 각각 0~30, 30, 30~60 프레임씩 애니메이션을 나누고 BlenderTree로 넣고 에임오브젝트에 Rot값을 받아 값을 변경하는식으로 부드럽게 처리를했다. 반대재생은 스피드를 -1로 설정했다.
골렘이나 루마니안 몬스터의 경우 원거리 공격을 하기에 이 애니메이션들이 항상 플레이어를 바라보지않고 천천히 플레이어쪽으로 값을 줘서 이동하는식으로 처리를했다
사운드 문제
2D처럼 오디오 매니저를 구성했는데 3D사운드 를 사용해야된다는걸 꺠달았다.
조건은 세가지가 있었는데
1. 오디오 매니저는 3D사운드를 사용해야한다.
2. 오디오 매니저는 그 클래스 내 함수를 호출하여 모든 VFX사운드를 조절해야한다
3. 오디오 소스를 한개만 추가한다면 겹치는 사운드가 나올수없다. 도중에 끊기게된다.
4. 오디오 소스를 추가한 객체가 도중에 삭제된다면 삭제되고 나오는 폭발음이 끊기게된다.
1번 문제 해결방안
오디오 매니저에서 사운드소스를 사용하지않고 사운드가 필요한 각 객체에 AudioSouce 컴포넌트가 Null이라면 추가해주고 있다면 SetSouce메서드를 호출해준다
.
2번 문제 해결방안
추가한 모든 사운드 객체를 돌며 Vfx사운드를 조절하고 SetSouce메서드를 호출해준다.
3번 문제 해결방안
겹쳐서 들려야하는 사운드는 OnShot으로 재생한다
Play,OnShot으로 관리하고 여러개의 소리를 랜덤으로 재생할떈 RandomPlay, RondomOnshot 함수를 만들어 인덱스를 넣어 소리 재생에 활용했다
4번 문제 해결방안
해당 객체에 포지션에 빈 오브젝트를 만들어 오디오 소스를 추가해주고 재생시키고 Clip의 Lenght가 끝난다면 Destroy해준다.
몬스터 설명
몬스터는 기본적으로 맞을때 노란색 LimRight, 근접공격시 빨간 RimRight를 셰이더 코드로 조절했다
그리고 여러 객체가 복제됬을떄 동시에 LimRight가 바뀌는걸 막기위해
각 머테리얼들을 관리하기위해 Render에서 Material을 관리하도록 바꿨다.
1. 딱정벌레
리스폰시 먼지파티클 재생
근접공격
2. 루마니안
리스폰시 포탈같은 파티클 재생
근접공격
원거리공격 = 파이어볼
3. 골램
리스폰시 AlphaCliping조절 홀로그램 파티클 재생
근접공격
원거리공격 = 레이저
골렘은 에임 애니메이션을 좀더 느리게 회전하도록 설정함
4. 여왕딱정벌레
패턴1. 입에서 3개의 산성침 발사
패턴2. 꼬리에서 산성가스 방출후 Ward몬스터 생성(체력이 다달을시 / 근접했을시 Emission을 썌게 선형보간으로 줘서 터지게만듬)
패턴3. 체력이 50%미만이면 발동 등에서 산성피가 지속적으로 파티클로 흘러나오며 땅속에서 벌레들이 나와 Y축회전하면서 터짐
몬스터 리스폰 방식
플레이어의 근접한 위치에서만 몬스터가 리스폰되기위해
플레이어의 RespawnDetect 콜라이더를 달아줘서 감지된 위치에 RespawnPoint를 활성화 시키고 딜레이후 리스폰되게
만들었다.
'PortFolio' 카테고리의 다른 글
[Unity2D]블라스퍼머스 개인 모작 (0) | 2024.07.19 |
---|---|
[PortFolio] Everspace + 창작 (0) | 2022.07.23 |