본문 바로가기

Unity/Unity 스파르타

5주차 - Tilemap(2D)

728x90

 

1. 그리기 순서  설정

2. Sprite Pivot 설정

3. Tilemap

4. Tilemap 충돌 정보 추가히기

5. 타일맵 콜라이더 최적화

 

1. 그리기 순서  설정

2D 에서 화면상에 캐릭터가 어떤 오브젝트보다 뒤에있는 경우 앞에 있는 오브젝트에 캐릭터가 가려져야 합니다.

이러한 그리기 순서를 해결 하기 위해 간단하게 그래픽스 설정을 해줍니다.

 

2d 에서는  y좌표값이 작을수록 나중에 나중에 그려져야 합니다.

 

Edut - Project Setting로 이동해 좌측 메뉴 Graphics로 들어갑니다.

Camera Settings에서 Transparency Sort Mode 필드를 찾습니다. 여기에서 스프라이트가 그려지는 순서가 결정됩니다. 드롭다운 메뉴를 통해 Default에서 Custom Axis로 변경합니다.

y좌표를 1 로 설정을 하면 Y축 기반으로 스프라이트를 그리게 됩니다.

 

2. Sprite Pivot 설정

  • 해당 스프라이트 인스펙터창에서 Pivot 설정을 통해 바꾸거나, Sprite Editor 을 통해 직접 Pivot의 위치를 바꿀 수 있습니다.
  • Sprite Renderer 컴포넌트의 Sprite Sort Point 를 Pivot 으로 바꿔주면 스프라이트의 피벗을 원하는 곳에 설정할 수 있습니다

3.Tilemap

  1. 컨텍스트 메뉴에서 Tilemap을 만들어 줍니다
    • Grid - 게임 오브젝트를 균등하게 씬의 셀에 배치하는데 사용됩니다.
    • Tilemap - 타일맵은 그리드의 자식 게임 오브젝트입니다. 타일맵은 타일로 이루어져 있습니다.
  2. 타일 폴더를 하나 생성하고 Tile을 만들어 줍니다 (폴더 내 마우스 오른쪽 Creat - Tile)
  3. 생성한 타일에 스프라이트를 설정해 줍니다.
  4. 팔레트(Palette)를 사용해 타일을 배치하고 선택적으로 타일맵에 적용시킬 수 있습니다
    • Window - 2D - TilePalette 로 이동해줍니다
    • Create New Palette를 선택해 팔레트를 생성해 주고 만들어 놓은 타일을 팔레트에 드래그 해줍니다.
    • Tile Palette 상단 툴바에 브러시 도구를 사용해 그리트를 채색할 수 있습니다.
    • 타일이 연결되지않고 서로 떨어져서 생성된다면
      • 계층창에 Grid 게임 오브젝트를 클릭해 Cell Size가 x,y 가 1로 설정되있는지 확인합니다.
      • 타일에 정요한 스프라이트 인스펙터로 들어가 Pixeles per Unit 을 확인해 줍니다.
        • Pixeles per Unit :  Unity 가 1유닛에 픽셀을 얼마나 넣을지 정의하여 스프라이트 크기를 가늠하도록 해줍니다. 
        • 예를 들어 스프라이트의 크기가 64 * 64 라면 Pixeles per Unit을 64 로 바꿔줘야합니다.
    • 해당 스프라이트의 인스펙터에서 Sprite Mode 를 Single 에서 Multiple로 바꿔줍니다. 스프라이트 크기를 확인하고 Pixel Per Unit 값도 적절하게 바꿔줍니다.
    • Sprite Editor 버튼을 클릭해 창 상단에 메뉴 바에 Slice를 클릭해 스프라이트를 나눠줍니다.
    • Slice로 나눠준 전체 스프라이트를 드래그해 팔레트에 드래그 앤 드롭 해준뒤 타일을 저장해줍니다.이미지에 서로 다른 스프라이트가 존재 할 시 Unity 에게 이 이미지에 여러개의 스프라이트가 존재한다고 알려줘야 합니다.
  5. Tilemap Renderer에 Order in Layer를 조절해 다른 게임 오브젝트보다 먼저 그려지게 해줍니다.

4. Tilemap 충돌 정보 추가하기

  • 계층 창에서 Tilemap 게임 오브젝트를 선택해줍니다.
  • 인스펙터창에 Tilemap Collider 2D 컴포넌트를 추가해 줍니다. 그럼 타일맵에 있는 모든 타일에 콜라이더가 추가됩니다.
  • Tile 폴더에 만들어진 타일들을 선택하면 콜라이더의 타입을 설정할 수 있습니다.

5. 타일맵 콜라이더 최적화

위 충돌 정보를 타일맵에 추가했다면 각 타일은 개별 콜라이더를 가지고 있습니다. 대규모 월드를 디자인하는 경우 물리 시스템 연산이 무거워져 게임이 느려질 수 있습니다. 그리고 콜라이더가 나란히 배치되어있어 미세한 틈으로 인해 부정확한 연산이 발생해 오류가 일어날 수도 있습니다.

Unity는 이런 문제를 해결하기 위해 Composite Collider 2D라는 컴포넌트를 제공합니다. 이를 통해 모든 오브젝트 콜라이더(또는 오브젝트의 자식에 있는 콜라이더)를 통합해 하나의 거대한 콜라이더를 만듭니다.

  • Tilemap 게임 오브젝트를 클릭합니다
  • Composite Collider 2D 컴포넌트를 추가해 줍니다.
    • Rigidbody 2D 가 있어야 제대로 작동함으로 해당 컴포넌트가 있는지 확인해줍니다.
  • Tilemap Collider 2D 컴포넌트에 Used By Composite 체크박스를 활성화 해줍니다.
  • Rigidbody 2D 컴포넌트에서 Body Type 프로퍼티를 Static으로 설정합니다.
    • Static으로 설정하면 월드상에서 이동이 멈춥니다. 또한 물리 시스템Rigidbody가 움직일 수 없다는 사실을 인지하여 연산을 최적화하는 데에도 도움이 됩니다.

 

팔레트 툴바 설명

 

728x90