Menu
CoddyTech

중력과 질량

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 71개 중 1번째.

Rigidbody를 추가하면, Add a Component에서 Rigidbody를 추가했을 때처럼 Unity의 물리 시스템이 해당 오브젝트를 다룹니다. 그때부터 중력은 매초 오브젝트의 속도를 9.81 m/s씩 높이며, Rigidbody에는 그 방식을 결정하는 설정이 있습니다. 그중 두 가지는 킬로그램 단위의 mass(새 Rigidbody의 경우 1)와 useGravity(새 Rigidbody의 경우 켜짐)입니다.

질량은 물체가 떨어지는 속도를 바꾸지 않습니다. 중력은 무거운 물체를 더 세게 끌어당기지만, 무거운 물체는 그만큼 더 가속하기 어렵기 때문에 같은 높이에서 떨어뜨린 1 kg 상자와 50 kg 모루는 같은 프레임에 착지합니다. 물체끼리 서로 밀 때는 질량이 중요합니다. 모루는 상자를 옆으로 밀어내지만 상자는 모루를 거의 움직이지 못합니다. 이 파티 풍선은 질량이 작고 중력의 영향을 받지 않으므로, 장면에서 배치한 위치에 떠 있습니다.

void Start()
{
    Rigidbody rb = GetComponent<Rigidbody>();
    rb.mass = 0.2f;
    rb.useGravity = false;
}

useGravity가 꺼져 있어도 풍선은 질량을 유지하며 무언가에 부딪히면 움직입니다. 중력만 끌어당기지 않을 뿐입니다. 다시 true로 설정하면 오브젝트가 어디에 있든 그 지점에서 중력이 다시 작용합니다. Unity의 물리 시스템에는 공기도 없으므로, Rigidbody에 선형 감쇠를 설정하지 않으면 깃털도 벽돌처럼 떨어집니다.

challenge icon

챌린지

쉬움

두 상자를 매단 다음, Space를 눌러 함께 떨어뜨리세요.

  1. Start()에서 GetComponent 줄 아래에 rb.mass = weight;와 rb.useGravity = false;를 설정하세요.
  2. Update()에서 Input.GetKeyDown(KeyCode.Space)일 때 rb.useGravity = true;를 설정하세요.

‘플레이’를 누르고 Space를 누르세요. 무거운 Safe와 가벼운 Box가 함께 착지합니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class CraneLoad : MonoBehaviour
{
    public float weight = 1f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        // 질량을 weight로 설정하고 중력이 끌어당기지 않도록 하기
    }

    void Update()
    {
        // Space: 중력이 다시 끌어당기도록 하기
    }
}

물리와 게임플레이의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드