콜라이더와 리지드바디로 충돌 효과 만들기

GoGoComputer·2024년 10월 27일

unity2d game

목록 보기
8/17
post-thumbnail

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


1. 부딪힐 대상 오브젝트 만들기

먼저, 플레이어의 자동차와 부딪힐 새로운 게임 오브젝트를 만들어보겠습니다.

  1. Hierarchy 창에서 상단의 [+ 버튼]을 클릭하고 [2D Object] > [Sprite]를 선택합니다.

  2. 새로운 스프라이트가 생성되면, Inspector 창에서 이름을 원하는 대로 변경합니다. 저는 "원"으로 이름을 지정하겠습니다.

  3. 원 오브젝트를 선택하고 단축키 W를 눌러 이동 툴로 전환한 후, 장면(Scene)에서 원하는 위치로 옮깁니다.

  4. 단축키 R을 눌러 스케일 툴로 전환하고, 스프라이트의 크기를 조정합니다. 또는 Inspector 창Transform 컴포넌트에서 Scale 값을 (2, 2, 2)로 직접 입력하여 크기를 설정할 수 있습니다.

  5. Sprite Renderer 컴포넌트에서 Color 필드를 클릭하여 스프라이트의 색상을 변경합니다. 저는 노란색 계열로 설정하겠습니다.


2. 현재 동작 확인하기

이제 게임을 실행하여 현재 어떤 동작이 이루어지는지 확인해보겠습니다.

  • 재생 버튼을 클릭하여 게임을 시작합니다.
  • 플레이어의 자동차를 움직여 원 오브젝트와 접촉해보면, 아무런 반응이 없는 것을 볼 수 있습니다. 자동차가 원을 그냥 통과해버리죠.
  • 이는 두 오브젝트에 충돌을 인식할 수 있는 구성 요소가 없기 때문입니다.

3. 콜라이더(Collider) 추가하기

오브젝트들이 서로 부딪히고 상호작용하려면 콜라이더를 추가해야 합니다.

플레이어(자동차)에 콜라이더 추가

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

부딪힐 오브젝트(원)에 콜라이더 추가

  1. 원 오브젝트를 선택합니다.
  2. Add Component 버튼을 클릭하고 "Collider"를 검색합니다.
  3. 원형 스프라이트이므로 Circle Collider 2D를 선택합니다. 만약 사각형 스프라이트를 사용했다면 Box Collider 2D를 선택하면 됩니다.
  4. 마찬가지로 콜라이더가 추가되면 녹색 테두리가 나타납니다.

4. 리지드바디(Rigidbody) 추가하기

콜라이더를 추가했지만, 여전히 오브젝트들이 물리적으로 상호작용하지 않습니다. 이는 리지드바디가 없기 때문입니다.

플레이어(자동차)에 리지드바디 추가

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

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

  1. Inspector 창Rigidbody 2D 컴포넌트에서 Gravity Scale(중력 값)0으로 설정합니다.
  2. 다시 게임을 실행하면 자동차가 더 이상 떨어지지 않습니다.

5. 충돌 동작 확인 및 개선하기

  • 이제 자동차를 움직여 원 오브젝트에 부딪혀 보면, 자동차가 튕겨나가거나 미끄러지는 것을 볼 수 있습니다.
  • 그러나 원은 여전히 움직이지 않습니다. 원도 움직이게 하려면 원 오브젝트에도 리지드바디를 추가해야 합니다.

원 오브젝트에 리지드바디 추가

  1. 원 오브젝트를 선택합니다.
  2. Add Component 버튼을 클릭하고 "Rigidbody 2D"를 추가합니다.
  3. Gravity Scale0으로 설정하여 중력의 영향을 받지 않도록 합니다.
  4. 이제 게임을 실행하면 자동차가 원에 부딪힐 때 원이 물리적으로 반응하여 움직이는 것을 볼 수 있습니다.

6. 콜라이더 형태 변경하기

자동차가 원을 밀 때 부드럽게 밀리지 않고 옆으로 비껴나가는 경우가 있습니다. 이는 콜라이더의 모양과 관련이 있습니다.

자동차의 콜라이더를 Box Collider로 변경

  1. 플레이어 오브젝트Capsule Collider 2D 컴포넌트 옆의 체크박스를 해제하거나, 컴포넌트를 우클릭하여 "Remove Component"를 선택하여 제거합니다.
  2. Add Component 버튼을 클릭하고 "Box Collider 2D"를 추가합니다.
  3. 이제 자동차의 콜라이더가 사각형으로 변경되어 원을 더 효과적으로 밀 수 있습니다.

7. 콜라이더와 리지드바디 정리

  • 콜라이더(Collider): 오브젝트 간의 충돌을 인식하고 처리하는 영역을 정의합니다. 콜라이더가 있어야 유니티가 두 오브젝트가 부딪혔는지 알 수 있습니다.
  • 리지드바디(Rigidbody): 오브젝트에 물리적인 성질을 부여하여 유니티의 물리 엔진에서 움직임과 힘을 계산할 수 있게 합니다.
  • 이 두 가지를 적절히 활용하면 오브젝트들이 현실감 있게 상호작용하도록 만들 수 있습니다.

8. 추가 팁

  • 트리거(Trigger): 콜라이더의 옵션 중 하나로, 물리적인 충돌은 발생하지 않지만 오브젝트가 콜라이더 영역에 들어왔을 때 특정 이벤트를 발생시킬 수 있습니다. 이는 다음에 더 자세히 다루겠습니다.
  • 컴포넌트 관리: 필요에 따라 컴포넌트를 추가하거나 제거하고, 활성화 또는 비활성화하여 원하는 동작을 구현할 수 있습니다.
  • 인스펙터 정리: 사용하지 않는 컴포넌트는 접기(Toggle) 기능을 사용하여 인스펙터를 깔끔하게 유지할 수 있습니다.

마무리

오늘은 유니티에서 콜라이더와 리지드바디를 사용하여 오브젝트 간의 물리적인 상호작용을 구현하는 방법에 대해 자세히 알아보았습니다. 이를 통해 게임에 더욱 생동감 있고 현실적인 요소를 추가할 수 있습니다.

  • 콜라이더를 통해 오브젝트의 충돌 영역을 정의하고,
  • 리지드바디를 통해 물리 엔진의 영향을 받도록 설정했습니다.
  • 또한, 콜라이더의 형태를 변경하여 충돌 동작을 개선하는 방법도 살펴보았습니다.

앞으로도 이러한 기법들을 응용하여 다양한 게임 메커니즘을 구현해보세요! 궁금한 점이나 추가로 알고 싶은 내용이 있다면 언제든지 질문해 주세요.

profile
IT를 좋아합니다.

0개의 댓글