유니티 기초 정리 5 - 충돌 처리와 맵 구성

woollim·2024년 10월 8일
0

Unity

목록 보기
5/7

1. 충돌과 각 컴포넌트의 이해

○ 기본 개념

Collider와 Rigidbody 컴포넌트는 Unity에서 물리 시뮬레이션과 충돌 감지를 처리하는데 필수적임

  1. Collider
    • Collider 컴포넌트는 게임 오브젝트에 물리적 형태를 부여함. 이는 충돌 감지를 가능하게 하며, 여러가지 종류의 Collider가 있음
    • BoxCollider 사각형, SphereCollider 구형, MeshCollider 복잡한 메시 형태의 Collider를 제공
  2. 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 시스템의 구성 요소
    1. Tilemap GameObject : Unity의 타일맵 구조를 구성하는 데 사용됨.
      Tilemap Grid의 자식으로 위치하고, 특정 타일의 배치를 관리함
    2. Grid GameObject : 모든 타일맵이 위치하는 기본 격자를 나타냄
    3. Tilemap Renderer : Tilemap의 모양을 실제로 그리는 역할을 함
    4. Tilemap Collider 2D : 필요한 경우, Tilemap에 물리적인 경계를 추가하는 데 사용됨. 이를 통해 게임 캐릭터가 타일맵 환경과 상호작용할 수 있게 됨
    5. 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
  • 그리기

0개의 댓글