
2024-03-29
MonoBehaviour 클래스와 관련된 OnColliderXXX 와 OnTriggerXXX 를 찾아보는데, 정보가 비슷한 듯 다른 점이 많았다.
두 개의 게임 오브젝트와 Collider , Rigidbody 컴포넌트만 있으면 궁금한 점을 모두 해결할 수 있어 직접 실험해보고 정리하는 시간을 가졌다.
게임 오브젝트에 Rigidbody 2D 컴포넌트를 연결하여 물리 시스템으로 제어
| 속성 | 기능 | 활용 |
|---|---|---|
| Dynamic | 다른 body type 과 모두 충돌하고 중력과 힘의 영향을 받음 | 당구공, 자동차, 캐릭터 |
| Kinematic | 중력과 힘의 영향을 받지 않으며 동적(코드)으로 제어하는 오브젝트에 적합 | 엘리베이터, 탄도학을 적용하지 않은 총알 |
| Static | 움직이지 않는 오브젝트에 적합 | 벽, 바닥 |
| Dynamic | Kinematic | Static |
|---|---|---|
![]() | ![]() | ![]() |
게임 오브젝트에 Collider 2D 컴포넌트를 연결하여 게임 오브젝트가 충돌하는 영역을 정의
Box , Circle , Capsule , Composite , Edge , Polygon Collider 2D 등이 존재한다.
이 부분을 찾아보다 Draw Mode 의 Tiled , Sliced 에 대해 알게되었다. 다음 포스팅의 주제로 선정되었다.
Effector 란 ?
게임 오브젝트 Collider 가 서로 접촉할 때, Effector 를 통해 물리적인 힘을 지정
Ex) 한쪽 방향으로만 통과할 수 있는 벽, 컨베이어 벨트 ...
| Circle | Capsule | Box |
|---|---|---|
![]() | ![]() | ![]() |
Assets - Create - 2D - Physical Material 2D 를 통해 생성
| 속성 | 기능 |
|---|---|
| Friction | Collider 의 마찰 계수 |
| Bounciness | 충돌 후, 표면에서 다시 바운스되는 정도, 0 이면 바운스하지 않으며, 1이면 에너지 손실 없이 완전히 바운스 |
직접 예시를 만들어보니 이해가 더 쉬웠다.
충돌을 구현하기 위해서는 두 물체 모두 Collider 를 가지고 있어야 했으며
Rigidbody 의 Body Type 이 Dynamic 일 때, 중력을 받아 아래로 떨어진다.
Kinematic 의 경우는 따로 스크립트를 작성하지 않았기에 움직임이 없고,
Static 의 경우, 고정된 물체이다.
또한, Kinematic 으로 설정한 오브젝트 위에 Dynamic 으로 설정한 오브젝트를 위치시켰을 때,
Dynamic 으로 설정한 오브젝트가 아래로 떨어지며 Kinematic 과 충돌하는 것도 볼 수 있었다.
시간이 오래 걸리지도 않았고, 이것 저것 옵션을 건들이다보니 재밌어서 시간 가는 줄 몰랐다.
Rigidbody 와 Collider, Trigger 에 대해 공부를 하고있는 사람은 여기저기 블로그를 찾아보는 것보다 직접 에디터를 켜서 실험해보면 더 좋을 것 같다.