【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は回転する時の空気抵抗だということです。
文字では少しわかりにくいと思うので、dragとangular dragの値をそれぞれInfinity(無限大)にした時の挙動を見てみましょう。
今回は回転しながら落ちてくるオブジェクトを使います。
dragをInfinity(無限大)にする
drag(空気抵抗)がInfinity(無限大)になったので、オブジェクトは落下せずに宙に浮いています。
しかし、angular drag(回転する時の空気抵抗)はゼロなので回転していますね。
angular dragをInfinity(無限大)にする
angular drag(回転する時の空気抵抗)がInfinity(無限大)になったので、オブジェクトは回転していません。
しかし、drag(空気抵抗)はゼロなので落下していますね。
まとめ
今回はRigidbodyのangular dragについてまとめました。
angular dragについての理解が少しでも深まったのなら幸いです。