Menu
CoddyTech

重力と質量

CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 1/63。

RigidbodyはオブジェクトをUnityの物理演算に委ねます。ココナッツが落ちたときにわかったように、その後は重力によってオブジェクトの速度が毎秒9.81 m/sずつ上がります。Rigidbodyには、その動きを決める設定があります。そのうちの2つが、キログラム単位の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にLinear Dampingを設定しない限り、羽根もレンガのように落下します。

challenge icon

チャレンジ

簡単

クレーンはドックの上で2つの木箱を吊り下げています。重いSafeと軽いBoxです。どちらにもRigidbodyとCraneLoadスクリプトが付いており、Inspectorでweightを設定します(Safeは80、Boxは2)。

  • ゲームが始まったら、Rigidbodyの質量をweightに設定し、重力による引っ張りを止めて、木箱がその位置に吊り下がったままになるようにします。
  • Spaceキーが押されたら、再び重力で引っ張られるようにして、木箱を落下させます。

Playを押し、Spaceキーを押してどちらの木箱が先に着地するかを見てから、Checkを押します。

自分で試してみよう

using UnityEngine;

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

    void Start()
    {
        // 質量をweightに設定し、重力による引っ張りを止める
    }

    void Update()
    {
        // Space: 再び重力が働くようにする
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

物理演算とゲームプレイのすべてのレッスン