on
[Unity] 3. 충돌 - Collision 충돌과 Trigger 충돌
[Unity] 3. 충돌 - Collision 충돌과 Trigger 충돌
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축으로만, 즉 회전만 한다.
from http://spaceunderthe.tistory.com/8 by ccl(A) rewrite - 2020-04-26 04:28:33