본문 바로가기

Unity 기능 - Rigidbody.AddForce() 정리, ForceMode 별 차이와 활용법

@코야딩구2025. 7. 28. 23:59

- Unity에서 Rigidbody.AddForce() 함수는 물체에 힘을 가해 물리적으로 움직이도록 할 때 사용하는 기본 함수이다.

- 이 함수는 ForceMode를 통해 힘의 종류와 작용 방식을 세밀하게 조절할 수 있다.

🔧 기본 사용법

// Vector3.forward: 힘의 방향 (이 예시는 전방)
// force: 힘의 크기 (float 값)
// ForceMode: 힘이 적용되는 방식 (기본값은 Force)
rigidbody.AddForce(Vector3.forward * force, ForceMode.Impulse);

🧪 ForceMode 종류별 차이

ForceMode 종류 설명 특징 및 사용 예시
Force 물리 시간 프레임마다 지속적으로 가속도를 적용한다. - 질량의 영향을 받는다.
- 천천히 가속되는 느낌을 줄 수 있다.
✅ 이동 제어, 부드러운 가속
Impulse 한 프레임에 순간적인 큰 힘을 준다. - 질량의 영향을 받는다.
- 순간적으로 튀어오르는 동작 구현 시 유용하다.
✅ 점프, 폭발 반동
Acceleration Force와 같지만 질량을 무시하고 가속도를 직접 적용한다. - mass가 큰 물체에도 동일한 속도로 가속 가능
✅ 특수 효과, 외부 힘 시뮬레이션
VelocityChange Impulse와 같지만 질량을 무시하고 속도 변화량을 직접 적용한다. - 현재 속도에 관계없이 즉시 속도 덧붙이기
✅ 순간 텔레포트성 이동, 충돌 시 튕김 구현

📌 각 ForceMode의 비교 요약

항목 Force Impulse Acceleration VelocityChange
질량 반영 O O
적용 주기 지속적 한 번 지속적 한 번
단위 힘 (F=ma) 충격량 (Impulse) 가속도 (a) 속도 변화 (Δv)
주요 사용처 걷기, 달리기 점프, 충돌 특수 효과 순간 이동, 튕김

💡 마무리 팁

- Force나 Impulse는 질량을 고려하므로 캐릭터마다 반응이 다르게 나타날 수 있다.

- Acceleration, VelocityChange는 질량을 무시하므로 절대적인 힘 제어가 필요할 때 적합하다.

- Rigidbody.drag, Rigidbody.mass, Use Gravity 옵션과 함께 조절하면 더욱 자연스러운 움직임을 구현할 수 있다.

목차