[Unity] Collider , Rigidbody

MINO·2024년 3월 29일

Unity 컴포넌트

목록 보기
1/2
post-thumbnail

2024-03-29
MonoBehaviour 클래스와 관련된 OnColliderXXX 와 OnTriggerXXX 를 찾아보는데, 정보가 비슷한 듯 다른 점이 많았다.

두 개의 게임 오브젝트와 Collider , Rigidbody 컴포넌트만 있으면 궁금한 점을 모두 해결할 수 있어 직접 실험해보고 정리하는 시간을 가졌다.



Rigidbody 2D

게임 오브젝트에 Rigidbody 2D 컴포넌트를 연결하여 물리 시스템으로 제어


공통 옵션

  • Simulated : Rigidbody 2D 와 연결된 Collider 2D 가 2D 물리 시뮬레이션과 상호작용할지 말지
  • Material : Physics Material 2D 를 통해 마찰 계수와 탄성을 조정
  • Layer Overrides : 다른 Collider 2D 와 충돌 여부를 결정할 때, 포함하거나 제외할 추가 레이어 설정
  • Constraints : Rigidbody 2D 의 움직임에 대한 제약 사항을 정의

Body Type

속성기능활용
Dynamic다른 body type 과 모두 충돌하고 중력과 힘의 영향을 받음당구공, 자동차, 캐릭터
Kinematic중력과 힘의 영향을 받지 않으며 동적(코드)으로 제어하는 오브젝트에 적합엘리베이터, 탄도학을 적용하지 않은 총알
Static움직이지 않는 오브젝트에 적합벽, 바닥

Dynamic , Kinematic 공통 옵션

  • Collision Detection : 충돌을 검사하는 방식을 정의
  • Sleeping Mode : 게임 오브젝트가 휴식 상태일 때 프로세서 시간을 절약하기 위한 수면 모드
  • Interpolate : 게임 오브젝트 움직임이 보간되는 방법을 정의

Dynamic 옵션

  • Use Auto Mass : 게임 오브젝트의 질량을 자동으로 감지 (크기에 비례)
  • Mass : 질량을 직접 지정
  • Linear Drag : 포지션 움직임에 영향을 미치는 저항계수 설정
  • Angular Drag : 회전 움직임에 영향을 미치는 저항계수 설정
  • Gravity Scale : 중력의 영향을 받는 정도를 정의

Kinematic 옵션

  • Use Full Kinematic Contact : rigidbody 2D 가 다른 모든 Rigidbody 2D 타입과 충돌할 수 있게 설정

DynamicKinematicStatic


Collider 2D

게임 오브젝트에 Collider 2D 컴포넌트를 연결하여 게임 오브젝트가 충돌하는 영역을 정의


Collider 2D 종류

Box , Circle , Capsule , Composite , Edge , Polygon Collider 2D 등이 존재한다.


공통 옵션

  • Edit Collider : 르탄이를 둘러싼 초록색 박스를 이동하거나 크기를 조절하여 충돌 영역을 조정
  • Material : Physics Material 2D 를 통해 마찰 계수와 탄성을 조정
  • Is Trigger : 충돌은 감지하지만, 물리적인 충돌은 일어나지 않음
  • Used By Effector : Collider 2D가 연결된 Effector 2D 컴포넌트에 의해 사용
  • Offset : Collider 2D 의 위치를 지정
  • Size : Collider 2D 의 크기를 지정

Box Collider 옵션

  • Used By Composite : Collider 가 연결된 Composite Collider 2D 에서 사용
  • Auto Tiling : Sprite Renderer 의 Draw Mode 가 Tiled 일 때 체크
  • Edge Radius : 버텍스가 원 모양이 되도록 모서리 주변의 반지름을 조정

이 부분을 찾아보다 Draw Mode 의 Tiled , Sliced 에 대해 알게되었다. 다음 포스팅의 주제로 선정되었다.


Effector 란 ?
게임 오브젝트 Collider 가 서로 접촉할 때, Effector 를 통해 물리적인 힘을 지정

Ex) 한쪽 방향으로만 통과할 수 있는 벽, 컨베이어 벨트 ...


CircleCapsuleBox

Material

Assets - Create - 2D - Physical Material 2D 를 통해 생성

속성기능
FrictionCollider 의 마찰 계수
Bounciness충돌 후, 표면에서 다시 바운스되는 정도, 0 이면 바운스하지 않으며, 1이면 에너지 손실 없이 완전히 바운스


Rigidbody + Collider + Trigger

직접 예시를 만들어보니 이해가 더 쉬웠다.
충돌을 구현하기 위해서는 두 물체 모두 Collider 를 가지고 있어야 했으며
Rigidbody 의 Body Type 이 Dynamic 일 때, 중력을 받아 아래로 떨어진다.
Kinematic 의 경우는 따로 스크립트를 작성하지 않았기에 움직임이 없고,
Static 의 경우, 고정된 물체이다.

또한, Kinematic 으로 설정한 오브젝트 위에 Dynamic 으로 설정한 오브젝트를 위치시켰을 때,
Dynamic 으로 설정한 오브젝트가 아래로 떨어지며 Kinematic 과 충돌하는 것도 볼 수 있었다.

시간이 오래 걸리지도 않았고, 이것 저것 옵션을 건들이다보니 재밌어서 시간 가는 줄 몰랐다.
Rigidbody 와 Collider, Trigger 에 대해 공부를 하고있는 사람은 여기저기 블로그를 찾아보는 것보다 직접 에디터를 켜서 실험해보면 더 좋을 것 같다.

profile
안녕하세요 게임 개발하는 MINO 입니다.

0개의 댓글