Rigidbody 2D

Rigidbody 2D コンポーネントにより、オブジェクトを物理エンジンで制御することができます。標準の Rigidbody コンポーネントの多くの概念は Rigidbody 2D に引き継がれます。ただし、Rigidbody 2D では、オブジェクトは XY 平面でのみ移動し、この平面に垂直な軸でのみ回転します。

Linear Drag 位置(=直線)移動の減衰値。 Angular Drag 回転移動の減衰値。

Rigidbody.AddTorque

https://docs.unity3d.com/ja/2019.4/ScriptReference/Rigidbody.AddTorque.html

Rigidbody にトルクを追加します。

力は、アクティブのリジッドボディにのみ適用することができます。ゲームオブジェクトが非アクティブの場合、AddTorque は効果がありません。

リジッドボディはデフォルトでスリープ状態から起き上がります。トルクサイズが 0 の場合、リジッドボディはスリープのままです。

public class PlayerController : MonoBehaviour
{
    [SerializeField] float torqueAmount = 1f;
    Rigidbody2D rd2d;
    // Start is called before the first frame update
    void Start()
    {
        rd2d = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rd2d.AddTorque(torqueAmount);
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            rd2d.AddTorque(-torqueAmount);
        }
    }
}

上記の例では、GetComponent<Rigidbody2D>()を使用して、アタッチされているRigidbody2Dコンポーネントインスタンスを取得しています。Start()メソッド内で取得しているため、スクリプトがアタッチされたオブジェクトの開始時に一度だけ実行されます。

その後のUpdate()メソッド内では、取得したRigidbody2Dコンポーネントを使用してRigidbody にトルクを追加する処理が行われています。例では、rd2d.AddTorque(torqueAmount)の引数にシリアライズされた浮遊小数点型の変数を取得して、キーが押された場合にトルクがかかる設定になっています。

このように、変数の型としてRigidbody2Dを使用することで、取得したRigidbody2Dコンポーネントに対して操作や設定を行うことができます。

📓 公式ドキュメント

https://docs.unity3d.com/ja/2021.3/Manual/class-Rigidbody2D.html