- 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 옵션과 함께 조절하면 더욱 자연스러운 움직임을 구현할 수 있다.
'Programming > Unity 정보, 기능' 카테고리의 다른 글
| 📌 Unity 직렬화와 [field: SerializeField] 정리 (3) | 2025.08.25 |
|---|---|
| Unity 간단 기능 정리 모음 #7 (3) | 2025.08.14 |
| Unity 간단 기능 정리 모음 #6 (2) | 2025.07.28 |
| Unity 기능 - FindObjectOfType 호출 시점 (0) | 2025.07.23 |
| Unity 기능 - transform.Find() 사용 이유와 구조 이해 (3) | 2025.07.23 |
