미니 프로젝트

유니티 팀 프로젝트 #4 3D 서바이벌 프로젝트 (완)

근본넘치는개발자 2024. 11. 6. 23:58

오늘은 쉬어가는 느낌으로다가

그동안 팀 프로젝트를 진행하면서 겪은 내용을 정리 해 보고자 합니다.

 

사실 글 상으로만 이번이 네 번째고,

더 많은 프로젝트를 하긴 했었습니다만..

 

평소 3D는 시도를 잘 안 해봐서

남겨야겠다는 생각으로 올렸습니다. 

 

팀 프로젝트를 하면서 맡은 부분

- 맵 만들기 

2024.11.01 - [유니티/3D] - 유니티 3D - 터레인(Terrian)에 대해 알아보자

 

- 엑셀 데이터 가져오기 

2024.09.11 - [분류 전체보기] - 유니티 - '엑셀'과 연동 해보자#1 Excel-Importer 사용하기

 

건축 시스템  - 아래 참고 자료 

 

확실히 글로 정리해 놓으니 필요할 때 찾아보며 도움이 많이 되어서 좋았습니다.

(전에 했음에도 기억나지 않는 부분도 꽤 있어서 헤맸지만 말이죠 ㅋ;;)

 

정리하고 보니 뭔가 많아 보이지만 

실제로 결과물을 까보니 팀원분들이 더 많이 작업 하셨네요.

 

하면서 겪었던 문제 

 

 

 

1. 플레이어 머리 위에 생성되는 문제.

 

RayCast를 검사 할 때 충돌하는 물체가 없으면

Ray의 시작 지점에 생성이 되는 문제였습니다. 

 

팀원분들과 어떻게 할지 고민하다가

range 끝을 넘어가면 끝점으로부터 바닥을 계산하는 걸로 처리했습니다.

 

아래는 코드입니다.

 

// 처음 작성한 부분
if (Physics.Raycast(ray, out hitInfo, range, _layerMask))
    {
        if (hitInfo.transform != null)
        {
            Vector3 _location = hitInfo.point;
            goPreview.transform.position = _location;
        }
    }
    
 // Range 범위 동안 충돌이 없다면 
 // range 거리만큼 떨어진 지점의 땅을 계산
        Vector3 rangeEndPoint = ray.origin + ray.direction * range;
        
        // 그 지점에서 아래로 Raycast를 쏨
        Ray downRay = new Ray(rangeEndPoint, Vector3.down);
        if (Physics.Raycast(downRay, out RaycastHit downHit, 100f, _layerMask))
        {
            goPreview.transform.position = downHit.point;
        }
        else
        {
            // 아래로 쏜 Ray도 충돌하지 않을 경우의 처리
            goPreview.transform.position = rangeEndPoint;
        }

 


2. 중복 생성 문제 발생 

UI를 액션에 구독하여 껐다 켰다 하도록 설정하는 과정에서

중복으로 들어가 발생한 문제였습니다.

 

이 부분은 이전에 수업에서 비슷한 이야기를 들은 적이 있어

금방 방법을 찾았고 다음과 같이 처리했습니다.

 

inventoryUI.OnUseEvent -= UseItem;  // 먼저 해제
inventoryUI.OnUseEvent += UseItem;

 

혼자 진행할 때는 몰랐는데 합치고 테스트하면서 

못 발견했던 오류를 발견하고,

팀원들과 이야기 나누는 과정에서 많이 배웠던 거 같습니다.

 

역시 직접 겪어봐야 하나 봅니다.

 

참고했던 자료 

 

https://youtu.be/ZCf e0q8pg68?si=kQNjrwK-rRPZW9WQ

https://youtu.be/8duTsykRc_Q?si=-5s7an_yDNPhKwDv

 

 

좀 옛날 영상이긴 하지만 흐름을 이해하니

개인적으로 적용하는 데는 무리 없었습니다.

 

1부 내용 영상을 진행하다 보면

프리뷰 아이템?이 플레이어를 향해 돌진하는 문제를 겪으실 수도 있습니다.

 

댓글에서도 자주 언급되고, 저 또한 그랬었는데

Layer를 잘 못 설정해서 그런 거였습니다. ;; 

 

이 부분에서 막혀도 2부 끝까지 보면

아마 이해하고 해결하는 데 도움이 될 겁니다.