[Part 12] 주차 성공에 대한 추가 코드

  • 문제
    • 다른 일반 도로, 어린이 보호 구역, 산간 S자 도로와 같이 끝이 있는 맵과는 다르게 주차장 맵은 주차를 성공해야만 게임이 종료된다. 이를 위해 다시한번 Collider 기능을 사용

 

  • 해결
    • Empty Object를 4개를 만들어서 아래와 같이 Box Collider 기능을 추가한다. 
    • 각각의 Object의 tag를 Park1, Park2, Park3, Park4로 한다. 
    • PlayerScore에 아래의 코드를 추가한다. 즉, 네개의 Box Collider가 감지되면 주차에 성공한 것이고 하나라도 벗어나면 주차에 실패한 것이다. 

Box Collider기능을 추가한 빈 Object

    private void OnTriggerStay(Collider other)
    {
        switch (other.gameObject.tag)
        {
            case "Park1":
                ParkFlag[0] = true;
                break;
            case "Park2":
                ParkFlag[1] = true;
                break;
            case "Park3":
                ParkFlag[2] = true;
                break;
            case "Park4":
                ParkFlag[3] = true;
                break;
            // 선을 밟을 경우, 무조건 주차 실패
            case "Line":
                isParkSuccess = false;
                break;
        }

        // If all flag is True => Parking is Success
        isParkSuccess = ParkFlag[0] && ParkFlag[1] && ParkFlag[2] && ParkFlag[3];
        //Debug.Log($"isParkSuccess {isParkSuccess}");

        if (isParkSuccess)
            Managers.Score.ScoreOut(Define.ScoreOut.Clear);

    }
    private void OnTriggerExit(Collider other)
    {
        switch (other.gameObject.tag)
        {
            case "Park1":
                ParkFlag[0] = false;
                break;
            case "Park2":
                ParkFlag[1] = false;
                break;
            case "Park3":
                ParkFlag[2] = false;
                break;
            case "Park4":
                ParkFlag[3] = false;
                break;
        }
    }

PlayerScore코드의 일부 

 

  • 결과
    • 원하는 기능을 제대로 수행하긴 했지만, 더 좋은 방법이 있을거 같은데 알지 못하겠어서 아쉬움이 남는다.