카테고리 없음

내일배움캠프 38일차 TIL 유니티 3D 팀프로젝트 - Zomvid 19(5)

joseph2518 2024. 11. 6. 23:03

20241106 / Unity_6차  9주차 수요일

 

 

 

오늘 한 일 : 건축 시스템, 아이템 획득 UI

 

건축은 건축용 아이템을 만들어 하나씩 소모하며 짓는 방식으로 했다.

 

그렇게 하려면 건축에만 아이템 오브젝트, 미리보기 오브젝트, 건설된 오브젝트 이렇게 세 종류가 필요하다.

 

 

 

건설 가능 여부를 결정하는 것이 꽤나 어려웠는데, 토대와 벽, 그리고 맨바닥에 설치할 것들은 서로 조건이 다르다.

 

예를 들어 토대는 같은 토대끼리 겹치지만 않으면 괜찮지만 벽은 추가로 토대랑 붙어 있어야 하는 식이다.

 

그렇기 때문에 exclusiveColliders와 necessaryColliders를 구분해

미리보기 오브젝트와 충돌한 다른 사물들을 분별하여 건설 가능 여부를 결정해야 한다.

 

private void OnTriggerEnter(Collider other)
{
    if (other.gameObject.layer == LayerMask.NameToLayer("Ground"))
    {
        return;
    }
    else if (other.gameObject.CompareTag("Player"))
    {
        exclusiveColliders++;
        return;
    }

    var colliderBuildObject = other.GetComponent<Constructure>();

    switch (buildType)
    {
        case BuildObjectSO.BuildType.Foundation:
            if (colliderBuildObject != null)
            {
                if (colliderBuildObject.buildType == BuildObjectSO.BuildType.Foundation)
                {
                    exclusiveColliders++;
                }
            }
            break;
        case BuildObjectSO.BuildType.Wall:
            if (colliderBuildObject != null)
            {
                if (colliderBuildObject.buildType == BuildObjectSO.BuildType.Foundation)
                {
                    necessaryColliders++;
                }
                else
                {
                    exclusiveColliders++;
                }
            }
            else
            {
                exclusiveColliders++;
            }
            break;
        case BuildObjectSO.BuildType.Ground:
            exclusiveColliders++;
            break;
    }
}