-
Unity | 리지드바디(Rigidbody)와 콜라이더(collider)의 관계다시한번 개발자도전! 2026. 1. 20. 13:11
< 리지드바디(Rigidbody) >
- GameObject가 물리제어로 동작하게 한다.
- 중력,다른 물체랑 충돌시 물리 연산이 가능해짐.
1. 리지드바디의 역할
- 중력 적용 (Use Gravity): 체크하면 사과가 떨어지듯 아래로 추락함.
- 힘 전달 (AddForce): 코드로 밀거나 던지는 물리적인 힘을 줄 수 있음.
- 마찰과 공기 저항: 공기 저항(Drag)이나 회전 저항(Angular Drag)을 조절해서 현실감을 줄 수 있음.
- 충돌 계산 주체: 콜라이더가 '몸체'라면, 리지드바디는 그 몸체를 움직이는 '근육' 같은 역할임.
2. 주요 옵션
옵션명 설명 팁 Mass 질량. 값이 클수록 무거워짐. 너무 큰 차이가 나면 물리 연산이 튈 수 있음. Drag 공기 저항. 높을수록 빨리 멈춤. 깃털 같은 효과를 낼 때 유용함. Is Kinematic 물리 연산을 무시하고 코드로만 움직임. 애니메이션으로 움직이는 장애물에 자주 씀. Constraints 특정 축의 이동이나 회전을 고정함. 캐릭터가 부딪혀서 옆으로 쓰러지는 걸 막을 때 필수!
3. 리지드바디의 핵심 메서드
- AddForce: 특정 방향으로 힘을 줌. (밀기)
Rigidbody rb; public float speed = 10f; void Start() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { rb.AddForce(Vector3.forward * speed); // 1. 단순 밀기 (지속적인 힘) if (Input.GetKeyDown(KeyCode.Space)) // 2. 순간적인 폭발력 (점프 등) { rb.AddForce(Vector3.up * 5f, ForceMode.Impulse); } }- AddTorque: 회전하는 힘을 줌. (돌리기)
void FixedUpdate() { // 물체를 Y축 기준으로 빙글빙글 돌림 rb.AddTorque(Vector3.up * 10f); }- Velocity: 현재 속도를 직접 제어함.
void FixedUpdate() { float xInput = Input.GetAxis("Horizontal"); float zInput = Input.GetAxis("Vertical"); // 현재 속도를 직접 변경 (가속도를 무시하고 즉시 반영) rb.velocity = new Vector3(xInput * speed, rb.velocity.y, zInput * speed); }💡 리지드바디 사용시 꿀팁!
- 리지드바디 연산은 매 프레임 실행되는 Update가 아니라, 물리 연산 주기마다 실행되는 **FixedUpdate**에서 처리하는 게 좋다.
- FixedUpdate 사용 이유: 물리 엔진 주기는 프레임(Update)과 다르기 때문에, 물리 관련 메서드는 무조건 FixedUpdate에서 호출해야 연산이 튀지 않고 부드러움.
- ForceMode의 종류: Force(질량 영향), Acceleration(질량 무시), Impulse(순간적 힘+질량), VelocityChange(순간적 힘+질량 무시) 4가지를 상황에 맞게 골라 써야 함.
4. 콜라이더(Collider)와의 관계
- Collider만 있는 경우 충돌이벤트가 발생하지 않음.
- 충돌 이벤트를 원할시 어느 한쪽이라도 리지드바디가 있어야함
- 둘 다 Rigidbody 없음 > 그냥 벽임. 코드로 감지 안 됨.
- 한쪽만 Rigidbody 있음 > 감지 됨! (보통 움직이는 주인공한테 넣음)
- 둘 다 Rigidbody 있음 > 당연히 감지 됨.
https://docs.unity3d.com/kr/2019.4/Manual/class-Rigidbody.html
리지드바디 - Unity 매뉴얼
Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을
docs.unity3d.com
⬆️Unity Documentation⬆️
'다시한번 개발자도전!' 카테고리의 다른 글
Unity | 싱글턴 패턴 (Singleton) (0) 2026.01.20 Unity | 소팅레이어(Sorting Layer) 와 오더인레이어(Order In Layer) (0) 2026.01.20 Unity | 콜라이더(Collider)와 충돌(collision) (0) 2026.01.20 Unity | 추상클래스 (Abstract Class)와 인터페이스(Interface) (0) 2026.01.15 Unity | 다형성(Polymorphism) 이란? (0) 2026.01.14