【unity入門】Rigidbodyのangular dragについてのまとめ

unityでどれぐらいオブジェクトが回転するかは、Rigidbodyのangular dragの値で決まります。

今回は、そんなangular dragについてまとめてみました。

この記事では、

1.angular dragとは
2.angular dragとdragの違い
3.スクリプトで制御する
4.値をInfinityにする


ということを扱います。

angular dragとは

angular dragとはオブジェクトが回転する時の空気抵抗のことです。

0からInfinity(無限大)までの数値を取り、値を大きくするに比例してオブジェクトが回転し難くなります。

angular dragが0のとき

angular dragが0.7のとき

スクリプトで変更

angularDragの値はスクリプトで変更することもできます

RigidbodyとRigidbody2Dでのやり方をそれぞれ説明していきましょう。

Rigidbody

RIgidbodyでangularDragの値を変更する場合は、

Rigidbody.angularDrag = 変更する数値;

で変更することができます。

サンプルコードは、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //angularDragの数値を変更
        rb.angularDrag = 10;

    }
}

Rigidbody2D

Rigidbody2Dの場合もほとんど同じで、

Rigidbody2D.angularDrag = 変更する数値;

で変更することができます。

RigidbodyをRidigbody2Dに変更するだけですね。

サンプルコードは、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbody2Dを取得
        var rb = GetComponent<Rigidbody2D>();

        //angularDragの数値を変更
        rb.angularDrag = 10;

    }
}


値をInfinityにする

angularDragの値を最大限に大きくしてオブジェクトの回転を止めたい場合は、値をInfinityにしましょう。

angular dragとdragの違い

Rigidbodyにはオブジェクトに空気抵抗を与えるdragという項目があります。

angular dragとの違いは、dragただの空気抵抗なのに対しangular drag回転する時の空気抵抗だということです。

文字では少しわかりにくいと思うので、dragangular dragの値をそれぞれInfinity(無限大)にした時の挙動を見てみましょう。

今回は回転しながら落ちてくるオブジェクトを使います。

dragをInfinity(無限大)にする

drag(空気抵抗)がInfinity(無限大)になったので、オブジェクトは落下せずに宙に浮いています。

しかし、angular drag(回転する時の空気抵抗)はゼロなので回転していますね。

angular dragをInfinity(無限大)にする

angular drag(回転する時の空気抵抗)がInfinity(無限大)になったので、オブジェクトは回転していません。

しかし、drag(空気抵抗)はゼロなので落下していますね。

まとめ

今回はRigidbodyのangular dragについてまとめました。

angular dragについての理解が少しでも深まったのなら幸いです。