Unity 볼 롤링 튜토리얼 3-2.Pick Up 객체 수집

이 기사의 대상자


  • Unity 입문하고 싶은 사람
  • 첫걸음을 밟을 수 없는 사람

  • OS나 환경이라든가


  • Windows 10 Pro
  • macOS Mojave
  • Unity 2019.2.8f1
  • Rider 2019.2.2

  • 보충


  • 공식 동영상에서 이용하고 있는 것은 Mac이므로, Windows 유저는 어느 정도 뇌내 변환해 보는 일
  • 필자는 Windows, Mac의 두 환경에서 확인. 우분투 등에서는 검증하지 않았다.
  • 기본 Unity는 영어 메뉴에서 사용
  • 실수가 있으면 츳코미 환영

  • 공식



    아이템 획득



    아이템과 플레이어가 충돌했을 때 취득하는 처리를 한다

    오랫동안 숨겨진 플레이어 객체를 시각화

    PlayerController.cs를 열고 OnTriggerEnter 메서드로 충돌 결정 구현

    태그 설정



    오브젝트에 태그명을 붙여 판별하기 위해, 준비를 실시한다



    현재는 「Untagged」가 되어 있으므로, 태그를 추가해 부여한다
    Add Tag에서 "Pick Up"태그 추가



    이제 프로젝트에 새 태그가 생성되었으므로 Pick Up의 Prefab에 태그를 설정합니다.



    Prefab을 이용하고 있기 때문에, 게임내의 12개의 Pick Up 오브젝트에도 같은 태그가 부여된다

    Collider에 대해 트리거를 설정하여 충돌 감지를 OnTriggerEnter 메서드로 감지 할 수 있습니다.
    ※왜 트리거를 설정할 필요가 있는지는 공식 동영상의 9:51~11:51 정도까지를 볼 필요가 있습니다



    PlayerController.cs에 충돌 판정용 코드 추가

    PlayerController.cs
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Pick Up"))
        {
            other.gameObject.SetActive(false);            
        }
    }
    

    이대로 플레이했을 때, 확실히 플레이어와 아이템이 충돌했을 때에 아이템이 비표시가 된다

    그러나 문제가 있으며 Unity는 특성상 정적 Collider에 대한 영역 정보 캐시를 유지합니다.
    본래라면, 정적이므로 캐시 정보는 재계산 등이 필요 없게 되므로 매우 좋지만 이번은 아이템이 회전하기 때문에
    매번 캐시하는 것은 매우 낭비

    Collider와 Rigidbody가 모두있는 게임 객체는 모두 동적으로 간주되므로 Rigidbody 추가
    추가하면 동적 Collider로 인식되지만 중력을 느끼게 되므로 바닥을 빠져 버린다

    이를 위해 Is Kinematic에 체크를 하여 오브젝트를 물리 연산의 영향을 받지 않게 한다

    좋은 웹페이지 즐겨찾기