유니티에서 콜라이더(Collider)와 리지드바디(Rigidbody)를 사용하여 게임 오브젝트들이 서로 부딪히고 상호작용하는 방법을 자세히 알아보겠습니다. 이 과정을 통해 유니티의 물리 시스템을 활용하여 더욱 현실감 있는 게임을 만들 수 있습니다.
1. 부딪힐 대상 오브젝트 만들기

먼저, 플레이어의 자동차와 부딪힐 새로운 게임 오브젝트를 만들어보겠습니다.
-
Hierarchy 창에서 상단의 [+ 버튼]을 클릭하고 [2D Object] > [Sprite]를 선택합니다.
-
새로운 스프라이트가 생성되면, Inspector 창에서 이름을 원하는 대로 변경합니다. 저는 "원"으로 이름을 지정하겠습니다.
-
원 오브젝트를 선택하고 단축키 W를 눌러 이동 툴로 전환한 후, 장면(Scene)에서 원하는 위치로 옮깁니다.
-
단축키 R을 눌러 스케일 툴로 전환하고, 스프라이트의 크기를 조정합니다. 또는 Inspector 창의 Transform 컴포넌트에서 Scale 값을 (2, 2, 2)로 직접 입력하여 크기를 설정할 수 있습니다.
-
Sprite Renderer 컴포넌트에서 Color 필드를 클릭하여 스프라이트의 색상을 변경합니다. 저는 노란색 계열로 설정하겠습니다.
2. 현재 동작 확인하기
이제 게임을 실행하여 현재 어떤 동작이 이루어지는지 확인해보겠습니다.
- 재생 버튼을 클릭하여 게임을 시작합니다.
- 플레이어의 자동차를 움직여 원 오브젝트와 접촉해보면, 아무런 반응이 없는 것을 볼 수 있습니다. 자동차가 원을 그냥 통과해버리죠.
- 이는 두 오브젝트에 충돌을 인식할 수 있는 구성 요소가 없기 때문입니다.
3. 콜라이더(Collider) 추가하기
오브젝트들이 서로 부딪히고 상호작용하려면 콜라이더를 추가해야 합니다.
플레이어(자동차)에 콜라이더 추가

- 플레이어 오브젝트를 선택합니다.
- Inspector 창에서 Add Component 버튼을 클릭하고 "Collider"를 검색합니다.
- 여러 가지 옵션이 나타나는데, 우리는 2D 게임을 만들고 있으므로 Capsule Collider 2D를 선택하겠습니다.
- 콜라이더를 추가하면, 장면에서 오브젝트 주변에 녹색 테두리가 나타납니다. 이 테두리가 바로 충돌 영역입니다.
- Sprite Renderer 컴포넌트의 체크를 해제하면 스프라이트가 보이지 않게 되어 콜라이더의 모양을 더 명확하게 확인할 수 있습니다.
부딪힐 오브젝트(원)에 콜라이더 추가

- 원 오브젝트를 선택합니다.
- Add Component 버튼을 클릭하고 "Collider"를 검색합니다.
- 원형 스프라이트이므로 Circle Collider 2D를 선택합니다. 만약 사각형 스프라이트를 사용했다면 Box Collider 2D를 선택하면 됩니다.
- 마찬가지로 콜라이더가 추가되면 녹색 테두리가 나타납니다.
4. 리지드바디(Rigidbody) 추가하기
콜라이더를 추가했지만, 여전히 오브젝트들이 물리적으로 상호작용하지 않습니다. 이는 리지드바디가 없기 때문입니다.
플레이어(자동차)에 리지드바디 추가

- 플레이어 오브젝트를 선택합니다.

- Add Component 버튼을 클릭하고 "Rigidbody 2D"를 검색하여 추가합니다.
- 이제 게임을 실행하면 자동차가 아래로 떨어지는 것을 볼 수 있습니다. 이는 중력 때문입니다.

- Inspector 창의 Rigidbody 2D 컴포넌트에서 Gravity Scale(중력 값)을 0으로 설정합니다.
- 다시 게임을 실행하면 자동차가 더 이상 떨어지지 않습니다.
5. 충돌 동작 확인 및 개선하기

- 이제 자동차를 움직여 원 오브젝트에 부딪혀 보면, 자동차가 튕겨나가거나 미끄러지는 것을 볼 수 있습니다.
- 그러나 원은 여전히 움직이지 않습니다. 원도 움직이게 하려면 원 오브젝트에도 리지드바디를 추가해야 합니다.
원 오브젝트에 리지드바디 추가
- 원 오브젝트를 선택합니다.
- Add Component 버튼을 클릭하고 "Rigidbody 2D"를 추가합니다.
- Gravity Scale을 0으로 설정하여 중력의 영향을 받지 않도록 합니다.
- 이제 게임을 실행하면 자동차가 원에 부딪힐 때 원이 물리적으로 반응하여 움직이는 것을 볼 수 있습니다.
6. 콜라이더 형태 변경하기
자동차가 원을 밀 때 부드럽게 밀리지 않고 옆으로 비껴나가는 경우가 있습니다. 이는 콜라이더의 모양과 관련이 있습니다.
자동차의 콜라이더를 Box Collider로 변경
- 플레이어 오브젝트의 Capsule Collider 2D 컴포넌트 옆의 체크박스를 해제하거나, 컴포넌트를 우클릭하여 "Remove Component"를 선택하여 제거합니다.
- Add Component 버튼을 클릭하고 "Box Collider 2D"를 추가합니다.
- 이제 자동차의 콜라이더가 사각형으로 변경되어 원을 더 효과적으로 밀 수 있습니다.
7. 콜라이더와 리지드바디 정리
- 콜라이더(Collider): 오브젝트 간의 충돌을 인식하고 처리하는 영역을 정의합니다. 콜라이더가 있어야 유니티가 두 오브젝트가 부딪혔는지 알 수 있습니다.
- 리지드바디(Rigidbody): 오브젝트에 물리적인 성질을 부여하여 유니티의 물리 엔진에서 움직임과 힘을 계산할 수 있게 합니다.
- 이 두 가지를 적절히 활용하면 오브젝트들이 현실감 있게 상호작용하도록 만들 수 있습니다.
8. 추가 팁
- 트리거(Trigger): 콜라이더의 옵션 중 하나로, 물리적인 충돌은 발생하지 않지만 오브젝트가 콜라이더 영역에 들어왔을 때 특정 이벤트를 발생시킬 수 있습니다. 이는 다음에 더 자세히 다루겠습니다.
- 컴포넌트 관리: 필요에 따라 컴포넌트를 추가하거나 제거하고, 활성화 또는 비활성화하여 원하는 동작을 구현할 수 있습니다.
- 인스펙터 정리: 사용하지 않는 컴포넌트는 접기(Toggle) 기능을 사용하여 인스펙터를 깔끔하게 유지할 수 있습니다.
마무리
오늘은 유니티에서 콜라이더와 리지드바디를 사용하여 오브젝트 간의 물리적인 상호작용을 구현하는 방법에 대해 자세히 알아보았습니다. 이를 통해 게임에 더욱 생동감 있고 현실적인 요소를 추가할 수 있습니다.
- 콜라이더를 통해 오브젝트의 충돌 영역을 정의하고,
- 리지드바디를 통해 물리 엔진의 영향을 받도록 설정했습니다.
- 또한, 콜라이더의 형태를 변경하여 충돌 동작을 개선하는 방법도 살펴보았습니다.
앞으로도 이러한 기법들을 응용하여 다양한 게임 메커니즘을 구현해보세요! 궁금한 점이나 추가로 알고 싶은 내용이 있다면 언제든지 질문해 주세요.