1. 충돌과 각 컴포넌트의 이해
○ 기본 개념
Collider와 Rigidbody 컴포넌트는 Unity에서 물리 시뮬레이션과 충돌 감지를 처리하는데 필수적임
- Collider
- Collider 컴포넌트는 게임 오브젝트에 물리적 형태를 부여함. 이는 충돌 감지를 가능하게 하며, 여러가지 종류의 Collider가 있음
- BoxCollider 사각형, SphereCollider 구형, MeshCollider 복잡한 메시 형태의 Collider를 제공
- Rigidbody
- Rigidbody 컴포넌트는 게임 오브젝트에 물리 법칙을 적용함. Rigidbody가 있는 오브젝트는 중력에 영향을 받고, 힘과 토크를 통해 움직일 수 있음
- 충돌이 되는 대상 중 한 쪽(움직이는 쪽)에는 Rigidbody컴포넌트가 붙어있어야 Collider와 충돌할 수 있음
Trigger 충돌도 Rigidbody 필요함
→ 움직이는 쪽이 물리 시뮬레이션을 하면서 충돌 체크를 하기 때문
○ 충돌 발생
- Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트를 발생시킴.
2D는 각각 뒤에 2D
를 붙임(안붙으면 3D)
- Trigger 시리즈도 있음. Trigger와 Collision의 차이점 - 트리거는 닿았는지 체크 정도, 콜리전은 물리적 충돌이 수반 됨
- 이 이벤트는 스크립트에서 처리하여 원하는 기능을 실행할 수 있음
- 예를 들어, 오브젝트가 땅에 닿으면 점프 가능 상태로 변경하거나, 오브젝트가 플레이어와 충돌하면 데미지를 입히는 등의 기능을 구현할 수 있음
- [주의!] BoxCollider, SphereCollider와 같은 3D 콜라이더가 붙어있는 오브젝트에는 2D 충돌함수가 발생하지 않으며, 2D 콜라이더가 붙어있는 오브젝트에도 3D 충돌 이벤트 함수가 발생하지 않음.
BoxCollider는 2D와 3D 버전이 모두 있어서, 실수하는 경우가 있음
○ 타일맵
- Tilemap 시스템의 구성 요소
- Tilemap GameObject : Unity의 타일맵 구조를 구성하는 데 사용됨.
Tilemap Grid의 자식으로 위치하고, 특정 타일의 배치를 관리함
- Grid GameObject : 모든 타일맵이 위치하는 기본 격자를 나타냄
- Tilemap Renderer : Tilemap의 모양을 실제로 그리는 역할을 함
- Tilemap Collider 2D : 필요한 경우, Tilemap에 물리적인 경계를 추가하는 데 사용됨. 이를 통해 게임 캐릭터가 타일맵 환경과 상호작용할 수 있게 됨
- Tile Assets : 개별 타일의 모양과 동작을 정의함. 여러 개의 타일을 묶어서 Tileset이라고 부르기도 함
- TileMap 준비하기
- Create → 2D Object → Tilemap → Rectangular
- 이름 수정 Floor
- Window → 2D → Tile Palette
- Create New Palette → 이름 수정 Dungeon → Artwork\Level 폴더에 저장
- Floor1 ~ 8 드래그 하여 추가 → Artwork\Level 폴더에 저장
- 모든 wall_* 추가
○ 타일맵 그리기
- Floor 하나 선택 후 그리기
- Create → 2D Object → Tilemap → Rectangular → 이름변경 BackDesign
- Tilemap Renderer → Order in Layer 2
- 그리기
- Create → 2D Object → Tilemap → Rectangular → 이름변경 ForeDesign
- Tilemap Renderer → Order in Layer 20
- 그리기
- Create → 2D Object → Tilemap → Rectangular → 이름변경 Collision
- Tilemap Collider 2D 추가
- Tilemap → Color → a 0
- 그리기