본문 바로가기

Unity/Unity2D_TopDown

Unity2D_TopDown - 타일애니매이션 및 콜라이더, 플레이어 기본설정

1.Rule Tile Animation

 - Rule Tile 생성 후 +표시 클릭항 Tiling Rules를 추가하고 Output을 Animation으로 주어 Size와 Speed등 설정 후

 - 관련 애니메이션 이미지를 삽입

 - 위 방법으로 만든 rule tile을 Tile Palette에 드래그앤 드롭하고

 - 계층구조의 Tilemap 오브젝트를 클릭하고 격자무늬 Scene이 나오면 팔레트에서 Scene 화면으로 드래그 앤 드랍

 

2. 카메라 해상도 조절

  - 픽셀 크기와 카메라 해상도가 맞지 않아서 아래와 같이 가운데에 줄이 그어져 있다

2.

- Main Camera의 Inspector에서 컴포넌트로 Pixel Perfect Camera를 추가하고 

- Assets Pixels Per Unit을 사용하고 있는 스프라이트의 픽셀크기인 16으로 조정해준다

- 해상도도 1280-720으로 조절해준다

 

 

3.BackDown TileMap 바깥쪽으로 플레이어가 나가지 못하도록 바깥쪽 콜라이더 만들기

 - Tilemap 오브젝트를 하나더 생성한다

 - 생성한 Tilemap오브젝트 의 Inspector에 Tilemap Collider2D, Composite Collider2D, rigidbody 2D 생성

 - 네모형태의 아무타일을 TilePalette 에서 가져와서  BackDown TileMap 바깥 테두리에 둘른다

 - Tilemap Collider 2D에서 Used By Composite를 체크 (복합콜라이더로 위임, 타일 각각의 콜라이더를 하나로 합쳐줌)

  (체크를 하면 초록색 콜라이더 경계가 사라질 수 도있는데 Composite Coliider2D 에서 Geometry Type을 Polygon에서 다시 Outline으로 선택해주면 경계가 다시 보인다)

 - rigidbody2D의 Body Type을 Static으로 고정시켜줌

 

- Tilemap Renderer의 Mask Interaction을 Visble inside Mask로 해주면 기존에 타일이 보였던게 사라짐

 (Mask 안쪽만 보이도록 한다는 옵션인데 현재는 Mask 자체가 설정되어 있지 않기 때문에 안보이게 됨)

 

 

 

4. player 오브젝트 생성 및 스크립트 작성

 - Player 이동 관련 스크립트 작성

- Player 오브젝트에 Rigidbody2D 컴포넌트를 추가하고 Constraints의 Freeze Rotation Z를 체크 해주어야 오브젝트가 

   안굴러다닌다

- Box Collider를 추가하고 원활한 이동 및 충돌을 위해서 collider의 크기를 조금 줄여준다

- Player가 중력의 영향을 받지 않도록 하기 위해서 RigidBody2D의 Gravity Scale을 0으로 준다

- 위에서 생성한 Script를 드래그 앤 드랍으로 추가  

 

 

5. 플레이어가 지나다닐 타일 설정

- Tilemap중에서 Player가 통과해야할 바탕이 되는 BackDown,BackUp 타일과 NonBlockObject 타일에

  모두 Rigidbody2D 속성을 추가해주고 BodyType을 기본 Dynamic에서 Static으로 바꿔 고정해준다

  (Dynamic상태면 재생시에 타일들이 밑으로 중력의 영향으로 떨어져 버림)

  *(기본적으로 물리충돌이 있는 오브젝트에는 RigidBody를 넣어주는 것이 좋고

    캐릭터가 타일 내부를 돌아다니게 구현할때는 collider에 is trigger를 추가하는 것보단

    RigidBody의 BodyType을 static으로 바꿔주는 것이 좋다)

 

 

6. BlockObject 설정

 - BlockObject에 쓰일 스크립트의 콜라이더를 Sprite Editor에서 조절해준다

 - BlockObjec에 RigidBody2D 를 추가하여 Static으로 바꿔주고

 - Tilemap Collider2D를 추가해준다(이미 위에서 콜라이더를 수정해주기전에 등록했다면 다시 재등록하면 재적용됨) 

 

7. 플레이어가 나뭇잎 부분은 통과할 수 있도록 하기

  - 새로운 Tilemap을 생성하여 NonBlockTree라고 이름을 변경하고 Tileplatte로 기존 콜라이더가 있던 나무잎 부분을      지우고 새로 그려준 후 Rigidbody2D만 추가해주고(static) Order in Layer를 플레이어(2) 보다 높은 3으로 설정