유니티 게임 개발 24

[유니티] 3D Portfolio #11 그래픽 최적화 작업

목표 그래픽 최적화를 통해 최대한 렌더링 비용을 줄여 렉을 없앤다. (작업 기간 : 2023.10.06~10.06 (1일 소요), 추가 작업 + 10.12일) 1. Clipping Planes 유니티 카메라에는 Clipping Planes 라는 옵션이 있다. 해당 값은 카메라에 비춰지는 오브젝트 렌더링 여부를 거리로서 결정하는데 기본 값으로 최저 0.3, 최대 1000으로 0.3 거리에서 1000 거리 사이의 오브젝트만 렌더링 한다. 이를 최대 거리 1000에서 100으로 수정하여 게임의 거리감에 맞도록 수정하고 불필요한 오브젝트 렌더링을 줄여주었다. 2. 풀 들의 쉐도우 설정, 반사 프로브 설정 수정 - 중요도가 떨어지나 렌더링 값을 많이 잡아먹던 풀들의 그림자를 제거하고 반사 프로브를 Simple로 ..

[유니티] 3D Portfolio #10 적 HP 바 구현, 기존 코드 상속코드화

목표 적 HP 바 구현 기존 코드 상속코드화 (작업 기간 : 2023.09.24~09.25 (2일 소요)) 1. 적 HP 바 구현 - 적 오브젝트에 종속될 Hpbar 프리팹 제작 ㄴ 메인 카메라의 방향으로 바라보도록 방향 업데이트 - 플레이어한테 타격을 받았을 때 체력바 활성화 ㄴ 적에게 멀어져 적 탐지 범위 밖으로 나갔을 시 비활성화 2. 기존 코드 상속 코드로 변환 - 내용이 같은 코드를 지닌 비슷한 역할의 코드를 묶어 상속 코드로 제작 ㄴ 관리의 용이성, 가시성 증가 - Dialog, Quest, Hit 클래스에 대해서 진행 - 이외의 코드들은 연관 관계로 엮여있는 코드가 대부분이다. ㄴ 모든 작업 종료 이후 PPT로 클래스 다이어그램 작성 예정

[유니티] 3D Portfolio #9 퀘스트 시스템 추가, 전투 판정 수정

목표 npc 와 대화 반복퀘스트 (작업 기간 : 2023.09.14~09.23 (10일 소요), npc 퀘스트 처리 방식 설계를 잘못하여 다시 구현하느라 오래걸림) 1. npc 와 대화 - npc에 정보를 담아줄 스크립트 NPC_Info 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class NPC_Info : MonoBehaviour { public string npcName; // npc 이름 public int npcQuestNum; // 해당 npc가 진행중인 퀘스트 public TextAsset npcQuestText; // npc에 할당된 텍스트 public List data; // npc 데이터 읽기 private void Start() { data = CSV..

[유니티] 3D Portfolio #8 퀘스트 시스템 구현, 전체적인 리팩토링

목표 퀘스트 시스템 구현 전체적인 코드 리팩토링 (작업 기간 : 2023.09.10~09.13 (4일 소요)) 1. 퀘스트 시스템 구현 1) 1차 구현 - 기존에 만들어둔 대화창 코드에 덧붙이는 식으로 1차 작동 구현 - 코드의 참조가 복잡해지는 것을 느껴 퀘스트 시스템을 슬롯 프리팹 형식을 사용해서 슬롯별로 관리해주기로 함 2) 2차 구현 - 슬롯 프리팹을 사용하며 코드는 간결해졌으나 가독성과 CSV와의 연계가 힘들어짐 - 범용성이 떨어져 매 챕터마다 새로 짜야하는 불편함 발생 - 구현한 시스템 자체를 사용할 수 있도록 CSV 파일 자체 구조 변경과 전체적인 리팩토링 필요성을 느껴 작업 시작 2. 코드 리팩토링 1) 3차 구현 - 현재 플레이어가 대화하고 있는 퀘스트 대상을 GameManager 에서 ..

[유니티] 3D Portfolio #7 CSV를 활용한 대화창, 튜토리얼 제작(기초작업)

목표 엑셀로 제작한 CSV 파일을 사용한 대화 데이터 관리 대화창 제작 튜토리얼 제작 (작업기간 2023.08.30 ~ 09.02 (4일 소요)) 1. 엑셀로 제작한 CSV 파일 파싱 CSV 리더를 사용하여 제작 ※ Assets / Resources 폴더안에 넣고 사용해야한다. ㄴ QuestNum 헤더를 기준으로 퀘스트 구분 ㄴ CSV 활용이 미숙해 기록을 나중에 봐도 헷갈릴 수 있으니 코드 첨부 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ..

[유니티] 3D Portfolio #6 전투 시스템 제작

목표 플레이어 무기 콜라이더 제작 적에게 플레이어 접근 시 추적 (테스트 용은 고정위치, 방향만 추적) 적 피격시 부위별 피격 애니메이션 (경직 있음), 사망 애니메이션 재생 플레이어 피격 시 타격 애니메이션 (경직 없음) (작업 기간 2023.08.26 ~ 08. 29 (4일 소요)) 1. 플레이어 무기 콜라이더 제작 - 복싱 전투 (주먹과 발에 콜라이더) - 검방 (검과 방패에 콜라이더) 2. 적이 플레이어 추적 - 적에게 탐색범위 콜라이더를 부여 ㄴ 탐색 범위 내로 들어올 시 플레이어를 향해 바라봄 ㄴ Quaternion.Slerp() 를 사용하여 부드럽게 추적 - 공격 범위안에 들어오면 공격 수행 ㄴ 레이캐스트로 정면 체크 ㄴ 공격 쿨타임 코루틴으로 부여 3. 적 부위별 피격 - 머리와 몸통 본 ..

[유니티] 3D Portfolio #5 자동문 제작

목표 가까이 다가가면 자동으로 문이 열리고 닫히도록 구현 문 앞에 있을 경우 계속해서 열려있는 상태 유지 (작업 기간 : 2023.08.23~2023.08.24(2일 소요)) 1. 플레이어 체크 (문 접근시) - 범위로 탐색을 위해 레이캐스트를 박스로 체크 ㄴ BoxCast 사용 ㄴ LayerMask로 Player 일 경우만 반응 - 문은 양방향으로 작동해야 하므로 안과 밖 두가지 스크립트로 제작 2. Open / Close 자동화 - 플레이어가 체크되어 작동이 시작되면 Quaternion.Slerp 을 사용하여 문의 시작각도에서 90도를 회전하는 식으로 열리게 함 ㄴ 오차 방지를 위해 절댓값이 1f 미만이 되면 시작 각도로 돌아가도록 조정 - Open 중에 Close가 작동하지 않도록 코루틴과 if 문..

[유니티] 3D Portfolio #4 전투 모션 구현

목표 장비 착용, 해제 구현 장비 미 착용 시 전투 (복싱), 장비 착용 시 전투 (검방) 애니메이션 구현 (작업 기간 2023.08.20 ~ 08. 22 (3일 소요)) 1. 장비 착용, 해제 - 게임 매니저 (싱글톤) 에서 관리하는 bool 값 변수를 사용하여 장비 소유 여부, 착용 여부 체크 ㄴ 아이템 획득 (PickUpActionController) 스크립트에서 장비 획득 시 true로 활성 - 액션 시 움직임 및 다른 액션 입력이 되지 않도록 코루틴을 활용하여 제어 bool 값 사용 ㄴ 입력 받는 Update 문에 if(!isAction)을 사용하여 입력 방지 ㄴ 움직임 별로 애니메이션 시간이 다르므로매개변수로 조정 - 장비 소유시 장착 액션 사용가능 2. 기본 액션 구현 - 통상 움직임 상태에..

[유니티] 3D Portfolio #3 아이템, 인벤토리 구현

목표 기본적인 인벤토리와 아이템 획득 및 사용 구현 (작업기간 2023.08.11 ~ 08.18 (8일 소요, 15일 코로나 완치)) 1. 인벤토리 시스템 구현 - 슬롯 프리팹 제작 : 각 슬롯을 프리팹으로 관리하여 슬롯 안에 아이템 정보를 담음. ㄴ 장비의 경우 아이템 카운트 이미지를 사용하지 않음. - Grid Layout Group 를 사용하여 인벤토리 슬롯 정렬 ㄴ 아이템 사용으로 인해 슬롯이 비워지면 해당 슬롯의 내용물을 비우고 슬롯을 맨 뒤로 보낸다. (매번 새로 정렬을 만들어 정보를 넣는 것이 아닌 회전식으로 구현) ㄴ 인벤토리 아이템 숫자에 증감이 있을 때 이미 생성된 슬롯을 불러오기만 하여 정렬 비용이 적다. - 인벤토리 사용시 게임 속도 감속 ㄴ Time.timeScale을 사용하여 0..