amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 유니티 Collider컴포넌트 & Rigidbody컴포넌트

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jun 05, 2024
[개념 콕] 유니티 Collider컴포넌트 & Rigidbody컴포넌트
✍🏼
유니티(Unity) 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 Unity 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

컴포넌트(Component) 란?

컴포넌트(Component)는 유니티에서 게임 오브젝트의 기능을 구현하는 모듈입니다. 모든 게임 오브젝트는 하나 이상의 컴포넌트로 구성되며, 각 컴포넌트는 특정한 기능을 담당합니다. 컴포넌트를 조합하여 게임 오브젝트의 동작을 설계할 수 있습니다.
 
유니티에서 제공하는 주요 컴포넌트는 다음과 같습니다.
  • Transform: 오브젝트의 위치, 회전, 크기를 제어합니다.
  • Renderer(MeshRenderer, SpriteRenderer 등): 오브젝트를 화면에 렌더링합니다.
  • Collider(BoxCollider, SphereCollider 등): 오브젝트의 물리적 경계를 정의하고 충돌 검출에 사용됩니다.
  • Rigidbody: 오브젝트에 물리 법칙을 적용하고 힘과 토크를 제어합니다.
  • Camera: 게임 월드를 보여주는 카메라 역할을 합니다.
  • Light: 게임 내 조명 효과를 구현합니다.
  • Audio(AudioSource, AudioListener): 게임 내 소리를 재생하고 제어합니다.
이 외에도 애니메이션, 사용자 인터페이스, 네트워킹 등 다양한 기능을 구현하는 컴포넌트들이 있습니다.
 
또한, 사용자는 자신만의 컴포넌트를 만들 수 있습니다. 이는 주로 MonoBehaviour 클래스를 상속받는 스크립트 형태로 구현되며, 게임 오브젝트에 부착하여 사용합니다. 사용자 정의 컴포넌트를 통해 게임의 고유한 로직과 기능을 구현할 수 있습니다.
컴포넌트는 유니티 에디터의 인스펙터 창에서 추가, 제거 및 설정할 수 있으며, 스크립트를 통해 런타임에도 컴포넌트를 조작할 수 있습니다.
 
여기에서 Collider와 Rigidbody 컴포넌트는 물리 엔진에 의한 객체의 동작과 충돌 처리에서 중요한 역할을 맡고 있습니다. 두 컴포넌트는 기본적으로 3D 환경에서 작동하며, 2D 환경에서는 Collider2D와 Rigidbody2D 컴포넌트가 별도로 존재합니다. 3D와 2D 컴포넌트는 스크립트 작업에서 약간의 차이가 있으므로 주의해야 합니다.
 

Collider 컴포넌트

Collider 컴포넌트란?

Collider 컴포넌트는 게임 오브젝트의 물리적 경계를 정의하고, 다른 오브젝트와의 충돌을 감지하는 데 사용되는 컴포넌트입니다. Collider는 게임 오브젝트의 모양과 크기를 나타내며, 물리 엔진에서 충돌 계산을 수행할 때 사용됩니다. 이러한 특성으로 오브젝트가 Collider를 지닌 다른 오브젝트와 상호작용할 수 있게 됩니다.
 

Collider 컴포넌트의 주요 기능

  • 충돌 감지
    • Collider를 가진 오브젝트끼리 접촉하면 충돌이 감지됩니다. 이를 통해 게임 내에서 물리적 상호작용을 구현할 수 있습니다.
  • 트리거(Trigger) 기능
    • Collider를 트리거로 설정하면, 다른 오브젝트와 겹칠 때 충돌 대신 트리거 이벤트가 발생합니다. 이는 특정 영역에 진입하거나 벗어날 때 사용될 수 있습니다.
 

Unity에서 제공하는 Collider 종류

  • Box Collider: 직육면체 형태의 충돌 영역을 정의합니다.
  • Sphere Collider: 구 형태의 충돌 영역을 정의합니다.
  • Capsule Collider: 캡슐 형태의 충돌 영역을 정의합니다.
  • Mesh Collider: 오브젝트의 메시를 기반으로 복잡한 형태의 충돌 영역을 정의합니다.
  • Terrain Collider: 지형(Terrain) 오브젝트의 표면을 기반으로 충돌 영역을 정의합니다.
  • Wheel Collider: 물리 기반 차량의 바퀴를 시뮬레이션하는 데 사용됩니다.
Collider 컴포넌트는 주로 정적인 오브젝트에 사용되며, 벽, 바닥, 장애물 등과 같은 오브젝트에 자주 사용됩니다. 이를 통해 게임 내에서 오브젝트 간의 물리적 상호작용과 충돌 처리를 구현할 수 있습니다.
Collider 컴포넌트의 속성은 Unity 에디터의 인스펙터 창에서 조절할 수 있으며, 스크립트를 통해 런타임에도 제어할 수 있습니다.
 
 

Rigidbody 컴포넌트

Rigidbody 컴포넌트란?

Rigidbody 컴포넌트는 게임 오브젝트에 물리 엔진의 영향을 받도록 하는 컴포넌트입니다. 즉, 우리가 게임에서 흔히 ‘물리’라고 부르는 부분을 담당하는데요. Rigidbody를 가진 오브젝트는 중력, 질량, 속도, 가속도 등의 물리적 특성을 가지게 되며, 힘과 토크의 영향을 받아 움직입니다. 이를 통해 게임 내에서 실제 물리 법칙에 기반한 동작을 구현하여 게임의 현실성을 부여합니다.
 

Rigidbody 컴포넌트 주요 기능

  • 물리 시뮬레이션
    • Rigidbody를 가진 오브젝트는 유니티의 물리 엔진에 의해 시뮬레이션됩니다. 중력, 마찰력, 공기 저항 등의 영향을 받아 움직임이 결정됩니다.
  • 힘과 토크 적용
    • Rigidbody에 힘(Force)과 토크(Torque)를 적용하여 오브젝트를 이동시키거나 회전시킬 수 있습니다. 이를 통해 물리 기반 상호작용을 구현할 수 있습니다.
  • 충돌 응답
    • Rigidbody를 가진 오브젝트는 다른 Collider와 충돌할 때 물리적으로 반응합니다. 충돌 시 속도와 방향이 변경되고, 충격량이 전달됩니다.
 

Rigidbody 컴포넌트의 주요 속성

Rigidbody 컴포넌트는 주로 동적인 오브젝트에 사용되며, 플레이어 캐릭터, 움직이는 물체, 물리 기반 퍼즐 등에 자주 사용됩니다. 아래 속성들을 통해 객체의 물리적인 특성을 조절할 수 있습니다.
  • 질량 (Mass)
    • 오브젝트의 질량을 나타냅니다. 질량이 클수록 가속도가 적게 변화하고, 관성이 커집니다.
  • 드래그 (Drag)
    • 공기 저항을 시뮬레이션하는 데 사용되는 값입니다. Drag가 클수록 오브젝트의 속도가 빠르게 감소합니다.
  • 회전 드래그 (Angular Drag)
    • 회전 운동에 대한 공기 저항을 시뮬레이션하는 데 사용되는 값입니다.
 
Rigidbody 컴포넌트의 속성과 메서드는 유니티 에디터의 인스펙터 창에서 조절할 수 있으며, 스크립트를 통해 런타임에도 제어할 수 있습니다. Rigidbody를 사용할 때는 물리 엔진의 안정성과 성능을 고려하여 적절한 설정을 해야 합니다.
🔑
사용 팁
Rigidbody를 사용한 객체에 물리적인 힘을 가할 경우, Position 값 뿐만 아니라 Rotaion값도 바뀝니다. 이를 의도하지 않았다면 Rigidbody 컴포넌트의 Constrains 항목에서 원하는 축을 체크하여 회전을 제한합시다.
 
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 유니티 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 게임 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 우민규 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter
RSSPowered by inblog