Unity 포트폴리오/플젝2. 3D FPS게임

개인프로젝트 - 개발일지 모음 / 기획서 / 보고서 / 빌드파일

jjiing 2022. 6. 26. 17:56

5/23-6/5에 진행한 개인프로젝트 개발일지입니다.

 

기획서& 보고서

https://drive.google.com/drive/folders/1PfjaG0kwhJHrMeMhne4_9ADn0HnKfXn3

 

빌드 파일

https://drive.google.com/drive/folders/1WHn9iB99zyP1xzZDOZ50k0UKDsZMqbIL

 

개발 플랜

1. 이동 구현

2. 무기 구현

3. 몬스터 구현

4. 몬스터와 플레이어 상호작용 구현

5. 모드 1 구현 (1자형 맵)

6. 모드 2 구현 (X자형 맵)

7. UI

 

1일차  (05/23)
구현 내용
플레이어 이동 구현
-커서 숨기기 및 중앙에 고정
-마우스로 시점 조정
-W/A/S/D 키로 이동하되, 점프 및 중력 구현하기

 
발생한 문제 및 해결방법
Q1. Transform.position으로 이동하면 중력 문제 발생
A1. character controller로 이동 및 점프 구현
 
공부 내용 및 블로그 주소
1인칭 시점 및 이동
https://jjing-log.tistory.com/15?category=1023483
마우스 커서 고정
https://jjing-log.tistory.com/14?category=1023483
 
다음 개발 계획
무기 장착 / 장전 애니메이션 / 공격 구현
 

 

2-3일차  (05/24-25)
구현 내용
- 플레이어 달리기 구현(shift)
- 총 발사(연사)/ 재장전 구현
- 발사 시 총구 이펙트 및 사운드 적용/ 총알 사용시 연료통 이펙트 적용
- 총 관련 애니메이션 제작
 
발생한 문제 및 해결방법
Q1. 다양한 총 사용 애니메이션이 없어서 이를 코드로 구현하려 하는 과정에서 어려움을 겪음
A1. 다른 프로젝트 코드를 분석하여 적용하려 하였으나 너무 복잡해서 실패. 결국 직접 포지션 값과 로테이션 값을 조정해 애니메이션을 제작했다. 처음 제작하는 것이라서 시간 조정과 적용 부분을 내일 손봐야 할 것 같다.
Q2. 연사 속도 조정
A2.  연사속도를 0.2로 담은 변수를 0이 될 때까지 프레임마다 감소시켜 0이되면 감소할 수 있게 구현하여 속도를 조정. 처음으로 코루틴이 아닌 다른 방법으로 시간을 조정해봄.
Q3. 총알 사용시 연료통 이펙트 적용
A3. 연료통 4개를 총알 개수에 따라 적용시키기 위해 값 연료통 별로 현재총알Ratio에 따른 값을 받아 구현. 부드럽게 이동시키기 위해 lerpinversLerp사용
 
공부 내용 및 블로그 주소
Unity FPS : PowerShot 및 Charging 애니메이션 구현 (tistory.com)
 
다음 개발 계획
총 애니메이션 적용 / 발사, 총알 구현
 

 

4-5일차  (05/26-27)
구현 내용
5/26
- 총 애니메이터 구성 후 적용 ( 걷기/ 뛰기/ 재장전 / 발사/ 정조준 / 정조준 후 발사)
- 사운드 적용 ( 점프/ 착지 / 재장전) - hit 로직 구현 (레이캐스트 사용), 피격 이펙트구현 5/27
- 총알 궤적 구현 - 라인렌더러 사용
- 조준선 구현(UI)
- 걷기/ 뛰기 사운드 적용
- Mathf.Sin를 이용해 땅 상하 좌우 자동이동 구현
 
발생한 문제 및 해결방법
26
Q1. 애니메이터 적용 과정에서 적용조건에 관한 다양한 문제 발생
A1. 각 상태에 대해 명확하게 정의하는 과정이 필요했고, 이를 코드로 구현했다.
Q2. 정조준 구현하기
A2. 처음에는 시네머신을 사용하여 총구 앞에 카메라를 붙이려고 했으나 다양한 오류(캐릭터가 계속 넘어지고 brain 카메라가 자꾸 멀리 이동함)발생. 이후 무기에 카메라를 붙여보려고 시도했으나, 무기에 카메라가 붙으면 발사 시 흔들리는 애니메이션이 실행될 때 카메라도 같이 흔들려서 애니메이션이 보이지 않는 문제 발생. 결국 직접 정조준 애니메이션과 정조준시 발사 애니메이션, 정조준 캔슬 애니메이션을 직접 제작하여 적용했다.
Q3. 정조준시 시야 확대 구현
A3. 카메라 FOV를 변수로 받아 정조준 시 값을 줄여주고 원복 시켜주게 구현
 
27
Q4. 걷기/뛰기 사운드 적용 -isWalk일때 play하면 소리 중복 발생
A4. !audioSource.isPlaying일때만 Play
Q5. 걷기와 뛰기에 같은 사운드 적용하는데 뛰기 사운드를 더 빠르게 재생하기
A5. 걷기에 PlayDelayed(0.1f); 로 플레이
Q6. 발사 시 총구에서 발사체 이펙트 적용
A6. 라인렌더러로 적용
Q7. 라인렌더러로 적용하니 RAY가 콜라이더에 맞았을 때만 발사체 이펙트 나옴
A7. 플레이어 앞에 빈 오브젝트 넣어주고 ray가 맞지 않았을 때의 빈 오브젝트의 위치로 라인렌더러 목표값 불러옴
 
공부 내용 및 블로그 주소
 Unity FPS : 총 스크립트 (tistory.com)
다음 개발 계획
몬스터 - 5가지 몬스터에 특성 부여, 모드/ 씬 별로 어떻게 등장시킬지 기획하기 몬스터 랜덤 배치(모드1) 맵 프리팹? > 이점 : 구성 깔끔하게/ 밸런스 있게 가능
 

 

6-7일차  (05/28-29)
구현 내용
- 내비메쉬 구현 > 왜 정상적으로 작동 안하는가?
- 땅 및 프리팹에 내비메쉬 베이크 하고 몬스터에 에이전트 적용
- 몬스터 기획하고 몬스터_11 구현
플레이어와 상호작용 구현.(접근/근접공격/죽음/ 피해)
 
발생한 문제 및 해결방법
- 내비메쉬 구현 > 왜 정상적으로 작동 안하는가?
 
- fade out 적용 실패 > 3d에는 적용 못하나?
 
- 몬스터 애니메이션 적용 실패 > 애니메이터 왜 적용안돼
 
- 총알 궤적 라인렌더러 이동하면서 하면 문제 발생 > 아예 다른방법으로 해야함
 
공부 내용 및 블로그 주소
 
 
다음 개발 계획
5/30
애니메이션 적용 몬스터 12 13 구현
내비메쉬 손보기
5/31
몬스터 21 22 구현
낙사 및 부활 구현
6/1
모드 1 구현
모드 2 구현 시작
6/2
모드 2 구현
6/3
UI 구현 시작
6/4-5
UI구현 및 사운드
6/6
카메라 연출 & PPT

 

8-9일차  (05/30-31)
구현 내용
버섯 몬스터 애니메이션 구현
버섯 몬스터 레이저 공격 구현
버섯 몬스터 죽을때 폭발 구현
벽 구현(1.1)
버섯몬스터1~3구현 완료

총 파워샷 구현중 - 파워셀 조정은 구현 완료
 
발생한 문제 및 해결방법
 
 
공부 내용 및 블로그 주소
 
 
다음 개발 계획
총 파워샷 - 파티클을 충돌시키기(리지드바디 어떻게?), 파티클 더 길게 나가게 하기(길이조정)
몬스터 2.1, 2.2 구현

 

10일차  (6/1)
구현 내용
파워샷 구현 - 몬스터 맞출때마다 charge돼서 다 충전되면 q키를 눌러 발사 가능
꿀벌 공격 구현(발사체)
두더지 구현 - 기본 움직임 / 애니메이션 / 공격1(범위), 공격2(발사체)
 
발생한 문제 및 해결방법
꿀벌에서 발사체가 안나가거나 빙글빙글 돔 > 충돌문제. 발사지점을 메쉬 콜라이더와 닿지 않게 조절.
파워샷도 같은문제 발사지점을 중앙 앞으로 땡겨주면서 발사 이펙트만 총구에서 나가게함 ( 조준 문제도 해결)
두더지가 자꾸 바닥으로 들어간다 (믹스아모 애니메이션) - rig에서 옵션을 휴머노이드로 바꿔주던지, animation 옵션 중 based upon 옵션을 바꿔주던지

 
공부 내용 및 블로그 주소
 
 
다음 개발 계획
모드 1
힐드랍 구현
두더지 공격3구현

 

11일차  (6/2)
구현 내용
두더지 공격3 구현
맵 배치, 맵 자동 상하운동
맵 프리팹화 & 랜덤생성
밸런스 조절
 
발생한 문제 및 해결방법
총 레이캐스트가 투명 벽 콜라이더에 막힘 > 레이어 마스크 처리(몬스터에만) 몬스터 투사체 공격기 배경 구조물에 막힘 > 레이어 충돌 해제 처리(프로젝트 세팅)
 
공부 내용 및 블로그 주소
Unity 오브젝트 상하 반복운동 Mathf.Sin (tistory.com)
 
다음 개발 계획
낙사
힐드랍
목숨
줌버그
UI
모드2 → 리스폰 구현

 

12일차  (6/3)
구현 내용
줌버그 수정(줌 상태에서 쏘면 풀리는 오류. 정조준 상태에서 stay하는 애니메이션 추가)
두더지 스킬1 공중에서 나오는 오류 수정 ( 플레이어 위치에서 이펙트 생성이라서 플레이어가 뛰면 공중에서 생성. → 이펙트 생성 위치의 y값을 두더지 위치로 바꿔줌)
죽음/ 낙사/ 부활 구현
몬스터 죽을때 랜덤으로 힐 드랍
 
발생한 문제 및 해결방법
 
 
공부 내용 및 블로그 주소
 
 
다음 개발 계획
ㅇ최대 체력 조정
ㅇ몬스터 개수 카운트 해서 클리어 조건 만들기
x몬스터 웨이브별로 배열만들기..?
싱글톤
총알궤적
모드2-리스폰구현
ui

 

13-14일차  (6/4-5)
구현 내용
몬스터 개수 카운트해서 클리어 구현
리바이브 포인트 수정 및 재구현
두더지 공격2 수정
플레이어 체력 60이하일때 스크린처리
라이프/체력 스테이지 2로 넘어가게 - 싱글톤
몬스터 다 안죽이고 포인트 도착했을 때 처리

모드2구현
 
발생한 문제 및 해결방법
몬스터 개수 카운트 : static 변수 사용(부모에서 초기화 0으로 해주고 자식에서 start+1넣어주면 알아서 카운트) 포탈 이동
몬스터 개수 카운트 : static 변수 사용(부모에서 초기화 0으로 해주고 자식에서 start+1넣어주면 알아서 카운트) 포탈 이동
부활 포지션 문제 -> 딕셔너리에서 배열로 바꿈 부활문제 transform.move로 위치가 안바뀜 > 캐릭터 컨트롤러 문제. 캐릭터 컨트롤러 활성화/비활성화 해주니 해결
 
모드2 - enum type으로 구현
공부 내용 및 블로그 주소
Unity FPS : enum Type으로 게임 모드 구분해주기 (tistory.com)
 
다음 개발 계획
 ui>사운드