Unity&C#/Unity

[Unity] Rigidbody ForceMode

리네엔 2024. 10. 29. 22:59

Unity의 AddForce 함수에서 사용하는 ForceMode는 오브젝트에 힘을 가하는 방식과 효과를 조절할 수 있는 옵션

1. ForceMode.Force

  • 지속적인 힘을 가하는 방식. 프레임마다 일정한 크기의 힘이 적용되어 물체의 질량을 고려해 가속도가 증가.

  • Newton의 두 번째 운동 법칙 F = ma를 사용하여 힘을 계산하므로, 질량이 큰 오브젝트는 더 천천히 가속.

  • 용도: 중력이나 지속적으로 작용하는 바람 등, 꾸준히 적용되는 힘을 표현할 때 적합.

    rigidbody.AddForce(direction * power, ForceMode.Force);

2. ForceMode.Acceleration

  • 가속도를 직접 적용하는 방식. Force와 비슷하지만, 질량을 무시하고 가속도만을 추가.

  • 가벼운 물체나 무게와 상관없이 일정하게 움직여야 할 때 사용.

  • 용도: 질량과 관계없이 가속도만을 적용하고 싶을 때 사용.

    rigidbody.AddForce(direction * power, ForceMode.Acceleration);

3. ForceMode.Impulse

  • 순간적인 힘(충격)을 가하는 방식으로, 물체의 질량을 고려하여 즉각적으로 속도가 증가.

  • Force와 차이점은 단시간에 큰 힘을 주어 물체의 속도를 빠르게 변화시킴.

  • 용도: 점프, 총알 발사, 충돌 등의 순간적 힘을 표현할 때 적합.

    rigidbody.AddForce(direction * power, ForceMode.Impulse);

4. ForceMode.VelocityChange

  • 즉각적으로 속도를 변경합니다. 물체의 질량을 무시하고 속도만을 바로 적용하여 오브젝트를 원하는 방향으로 이동시킴.

  • 질량에 상관없이 일정한 속도를 추가하는 데 유용.

  • 용도: 물체를 특정 속도로 갑작스럽게 움직여야 하는 경우, 즉각적인 속도 변화가 필요할 때 사용.

    rigidbody.AddForce(direction * power, ForceMode.VelocityChange);