유니티 게임 개발/3D Portfolio

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

노랑꼬리 2023. 9. 23. 11:43

목표

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<Dictionary<stringobject>> data;       // npc 데이터 읽기
 
    private void Start()
    {
        data = CSVReader.Read(npcQuestText.name);
    }
 
}
cs

 

- npc 마다 퀘스트 진행을 별개로 처리할 수 있음

ㄴ NPC 별 할당 텍스트를 개별로 주어 관리가 용이하도록 함

 

- 대화로그 처리는 게임매니저에서 npc와의 대화라면 npcQuestActive를 true로, 시스템 대화라면 npcQuestActive를 false로 처리하여 시스템 퀘스트의 진행도가 침범받지 않도록 처리

 

- 아이템 습득처럼 카메라에서 Ray를 쏘아 대화가 가능한 NPC의 경우 대화 선택지 출력으로 대화 진입

 

 

2. 반복퀘스트

- 퀘스트 이후 해당 npc의 퀘스트 번호를 이전 대화 지문으로 돌려 다시 반복할 수 있도록 함

ㄴ  진행도에 따른 대화 변화는 GameManager의 stage_index를 활용하여 처리

 

- 적 소탕 퀘스트를 예시로 만들었기 때문에 퀘스트 수락 시 리스폰 하는 방식으로 구현

 

 

3. 전투 판정 수정

- 공격시 선딜 추가

 

- 적이 일정 범위 내 상대 추적

ㄴ 플레이어와의 거리를 Vector3.Distance 로 계산하여 멀어지면 추적 정지

 

 

결과물

 

 

- 시스템이 부여한 퀘스트와 npc(현재는 튜토리얼 북에서 받음)가 부여한 퀘스트가 별개로 작동

- 포션 퀘스트에서 사용시 퀘스트를 체크하여 소모품 퀘스트가 있다면 해당 퀘스트 아이템과 같을 경우 카운트

- 적이 일정 범위에서 플레이어 추적 (현재 범위 5로 설정)