호빵의 IT 개발소

[유니티] Rigidbody 본문

C#, 유니티/유니티엔진 기초

[유니티] Rigidbody

호빵Stack 2022. 7. 5. 01:52

Rigidbody

  • 오브젝트에 Rigidbody를 부여하여 물리적 속성을 이용하여 자연스러운 이동이 이루어질 수 있음

주로 사용하는 Rigidbody 프로퍼티

Mass - 오브젝트 질량
Drag - 오브젝트가 힘에 의해 움직일 때 공기 저항이 영향을 미치는 정도를 나타냅니다. 0이면 공기 저항이 없으며 무한대라면 오브젝트가 즉시 정지합니다.
Use Gravity - 활성화되면 오브젝트는 중력의 영향을 받습니다.
Is Kinematic - 활성화되면 오브젝트는 물리 엔진으로 제어되지 않고 오로지 Transform 으로만 조작됩니다. 플랫폼을 옮기는 경우나 HingeJoint 가 추가된 리지드바디를 애니메이션화하는 경우에 유용합니다.

 

Rigidbody.AddForce

  • 오브젝트에 일정한 힘을 줌
public class Tree : MonoBehaviour
{
    private Rigidbody childRigid;
    private float force;
    
    // 나무 쓰러짐 구현
    private void FallDownTree()
    {
        childRigid.AddForce(Random.Range(-force, force), 0f, Random.Range(-force, force));
    }
}

 

Rigidbody.velocity

  • 해당 Object의 rigidbody 속력 벡터
  • 중력과 바닥에 마찰로 인해 속도가 서서히 줄어 듬
  • 주로 다른 물체에 의해 밀리거나, 캐릭터 점프나 수영에 사용 함.
public class Player : MonoBehaviour
{
    private Rigidbody myRigid;
    private float upSwimSpeed;
    private float jumpForce;
    
    // 수면 위로 수영
    private void UpSwim()
    {
        myRigid.velocity = transform.up * upSwimSpeed;
    }

    // 점프
    private void Jump()
    {
        myRigid.velocity = transform.up * jumpForce;
    }
}
Comments