2023/01/13

노윤수·2023년 1월 13일

플레이어의 게임 방향을 정하기 위해서 만들어 놓은 가상의 벽은 레이어를 obstacle(지형 지물) 혹은 worldEnd로 지정해야 findNearestObj에서 설정해놓은 검출하지 않는 layer로 설정할 수 있다.

현재 버그-rum count가 안 올라가는 버그/npc간의 대화에서 색상이 원래대로 돌아오지 않음

굉장히 구현이 뿌듯한 부분
-재귀함수를 사용해서 해당 timeLine에 해당하는 talkData가 없더라도 id를 줄여가면서 talkData를 찾아가게끔 만드는 함수 구현

        void changeIndex()
        {
            //talkData가 null일 경우 동일 변수 대입이 불가능하므로 catch로 재귀함수 구현(나중에 velog 쓰기)
            try { talkData[id][0] = talkData[id][0]; }
            catch
            {
                id -= 1000;
                if (id >= 0)
                {
                    changeIndex();
                }
            }
        }

tryCatch 구문을 사용했는데, try에서 exception이 발생할 시에 catch로 넘어가게 된다. 즉, 해당 함수에서 talkData에 해당하는 data가 없으면 catch로 넘어가서 id를 1000줄인다. (이전 timeLine에는 해당하는 data가 있는지 확인하는 장면) id가 0이 될 때까지 줄이며,(저게 없으면 오류가 뜰 경우 재귀함수가 무한대로 돌아가 유니티 프로그램이 꺼지는 현상이 발생), 해당 data가 생길 경우 try구문으로 해당 id값을 할당한다.

timeLine0: 처음 시작장면
timeLine1: 처음 소환된 이후 처음으로 광장에 들어갔을 때
timeLine2: 광장에서 책을 집고 첫 번째 과거여행을 했을 때
timeLine3: 과거여행을 한 직후 얼른 다시 광장에 도착했을 때
timeLine4: 힌트가 되는 사람 두 명과 대화하고 달라진 식당주인의 말을 들었을 때
timeLine5: 식당주인의 조건인 럼주통 3개를 다 가지고 왔을 때(이때 timeLine이 6으로 바뀜
timeLine6: 도둑을 찾는 quest와 도둑과의 대화
timeLine7: 도둑과의 대화가 끝나고 경비병을 처리하라는 임무를 받음
timeLine8: 경비병과의 전투시작(첫 씬에서 timeLine증가함)

이제는 씬 간의 데이터 전환을 위한 내용을 공부해야 할 시간이 온 듯하다...데미지를 넣은 만큼 돈을 얻어서 아이템을 사거나, 스킬 업그레이드를 가능하게끔 만들어야한다.

3d object를 canvas에 넣고 clear flags-depth only, culling mask-everything으로 놓는다. 그리고 ScreenSpace-Camera로 하고 camera배치를 해준다. camera depth는 0으로 놓는다.

workBench에 대한 ui는 만들었는데 문제는 workBench를 보고 있는 상태에서 workBenchUI가 취소가 되지않는다. workBench를 안 보고 있는 상태에서만 가능.
그리고 그 때 계속 한번씩 npc가 어두워지는 버그가 있음. (빨리 해결 필요함)

profile
코딩조아

0개의 댓글