[Unity]Rigidbody의 ForceMode

Hoojung Ahn·2024년 5월 24일

Rigidbody 컴포넌트에는 물리적 힘을 가할 때 사용하는 다양한 ForceMode가 있다. ForceMode는 힘이 적용되는 방식을 결정하며, 총 4가지 종류가 있다: Force, Acceleration, Impulse, VelocityChange.

  1. ForceMode.Force
    설명: 지속적으로 힘을 가한다. 힘의 크기는 질량과 시간에 따라 나누어진다. 일반적으로 FixedUpdate에서 호출된다.
    사용 상황: 일정한 힘을 지속적으로 가할 때 사용된다.

우주선이 엔진을 계속해서 작동시킬 때.

'''csharp
void FixedUpdate() {
rb.AddForce(Vector3.forward * 10f, ForceMode.Force);
}
'''

  1. ForceMode.Acceleration
    설명: 질량에 관계없이 가속도를 가한다. 질량에 의해 영향을 받지 않으므로, 일정한 가속도를 부여한다.
    사용 상황: 특정한 방향으로 일정한 가속도를 주고 싶을 때 사용한다.
    예시:

'''csharp

void FixedUpdate() {
rb.AddForce(Vector3.up * 5f, ForceMode.Acceleration);
}
'''

  1. ForceMode.Impulse
    설명: 순간적으로 큰 힘을 가한다. 이 힘은 질량과 시간에 비례하여 적용된다.
    사용 상황: 짧은 시간에 순간적인 힘을 가하고 싶을 때 사용한다. 예를 들어, 점프할 때의 힘이나 총알이 발사될 때의 힘.

'''csharp

void Update() {
if (Input.GetKeyDown(KeyCode.Space)) {
rb.AddForce(Vector3.up * 300f, ForceMode.Impulse);
}
}
'''

  1. ForceMode.VelocityChange
    설명: 질량에 관계없이 속도의 변화를 직접적으로 가한다. 질량에 관계없이 즉각적으로 속도를 변경한다.
    사용 상황: 즉각적인 속도 변화를 원할 때 사용된다. 예를 들어, 캐릭터가 방향을 빠르게 전환할 때.

'''csharp

void Update() {
if (Input.GetKeyDown(KeyCode.W)) {
rb.AddForce(Vector3.forward * 10f, ForceMode.VelocityChange);
}
}
'''

각 ForceMode는 물체의 움직임을 다르게 제어할 수 있도록 해주며 이를 통해 다양한 물리적 상호작용을 구현할 수 있다. 상황에 맞는 ForceMode를 선택하여 사용하면 더 자연스러운 물리적 효과를 얻을 수 있다.

0개의 댓글