Programing/UNITY

[Unity] 3. 충돌 - Collision 충돌과 Trigger 충돌

바오밥 하단 2020. 4. 26. 04:06

 

 

 

1. 충돌

: 두 물체가 부딪히는 현상

- Collider: 충돌 범위를 나타내는 컴포넌트. 2D게임에서는 항상 2D가 위에 붙은 Collider를 사용

- Rigidbody(2D): 유니티의 물리엔진 컴포넌트. 마찰력, 중력, 탄성 등의 물리엔진을 구현하기 힘들기 때문에 Unity는 쉽게 사용할 수 있도록 제공.

 

1) Collision 충돌

: 물리적인 연산을 하며 충돌을 감지한다.

- 조건 3가지

  • 두 물체 모두 Collider(2D)를 가지고 있다.

  • 둘 중 적어도 하나는 Rigidbody(2D)를 가지고 있다.

  • Rigidbody(2D)를 가진 오브젝트가 움직인다.

 

2) Trigger 충돌

: 물리적 연산을 하지 않고 충돌을 감지할 수 있다. = 두 오브젝트가 접촉했을 때 서로 튕기지 않고 그냥 통과하게 된다.

- 조건 4가지

  • 두 물체 모두 Collider(2D)를 가지고 있다.

  • 둘 중 적어도 하나는 Rigidbody(2D)를 가지고 있다.

  • 둘 중 하나는 IsTrigger옵션이 체크되어 있다.

  • Rigidbody(2D)를 가진 오브젝트가 움직인다.

 

 

2. 적용

  • 캐릭터 오브젝트 하나와 박스 오브젝트 하나가 있다고 하자.

  • 두 오브젝트 모두 Collider(2D)를 가지고 있어야 한다.

  • 오브젝트의 인스펙터 창에서 Add Component를 누르고 collider를 검색한다. 여러가지 collider가 뜨는데 원하는 모양을 적용하면 된다. 

  • 주의: 2D에서는 반드시 뒤에 2D가 붙은 collider를 선택해야 한다.

  • collider를 적용하면 노란색 테두리가 보이는데 그것이 충돌 범위이다.

  • 인스펙터 뷰에 보이는 collider 창에서 Edit Collider를 누르면 원하는 충돌범위 사이즈를 조절할 수 있다.(오브젝트의 크기가 달라지지 않는다.)

  • 둘 중 적어도 하나는 Rigidbody를 가지고 있어야하기 때문에 중력을 넣고 싶은 오브젝트(캐릭터 오브젝트)에 Rigibody 2D 컴포넌트를 추가한다.(collider를 추가한 방법대로 Add Component에서 검색해서 넣는다. 2D에서는 반드시 2D가 붙은 것을 선택.)

 

 

3. Rigidbody 2D

  • Mass: 물체의 질량. 높을 수록 충격량이 달라진다. 높아진다고 해서 더 빨리 떨어지지는 않는다.

  • Linear Drag: 직선 저항. 직선 운동을 할 때 느려지는 정도.(0으로 되어있으면 직선 운동을 할 때 시작 속도 그대로 움직인다.)

  • Angular Drag: 회전 저항. 회전을 할 때 느려지는 속도.(마찬가지로 0이면 회전을 해도 속도가 같음)

  • Gravity Scale: 중력 가속도. 1이면 아래로 떨어지고, -1이면 위로 떨어진다. 0이면 무중력 상태로 공중에서 움직이지 않는다.

  • Constriants: 오브젝트를 고정한다. Freeze Position에서 x를 누르면 x축으로는 물리엔진 영향을 받지 않고 움직이지 않는다. y도 마찬가지. x, y를 모두 누르면 z축으로만, 즉 회전만 한다.