名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

【Unity】RigidbodyのmaxAngularVelocityについて

こんにちは、SAT-BOXのコアラです。


本題の前に宣伝です!

先週販売開始しました「Voxel Shot for Nintendo Switch」、Nintendo Switch週間ダウンロードランキング2位になりました!

皆でワイワイ盛り上がれるゲームですので、Switchを持ってる方はぜひゴールデンウィーク中に遊んで欲しいなって思います!

↓↓当ブログの紹介記事です
sat-box.hatenablog.jp


では本題です。

Unityで、Rigidbodyによる回転はRigidbodyのangularVelocityという回転ベクトルを元に行われますが、初期状態だと、このベクトルには上限があります。

それがmaxAngularVelocityですね。


maxAngularVelocityは初期値が7で、そのままだと1秒間に約1回転するのが上限です。
なんで7で約1回転なのかというと、端的に言えばラジアン角だからです。
ラジアン角だと、360°は2πになり、2πは約6.28です。

僕の推測ですが、初期値が7なのは1回転の6.28より大きくて近い整数だからかなと思ってます。


maxAngularVelocityは回転のし過ぎによる挙動の破綻を防ぐためにあるので、モノによって適切な数値を入れるのが良いと思います。
入れる処理は単純にこうです。

public class Sample : MonoBehaviour {
	void Start () {
        	GetComponent<Rigidbody>().maxAngularVelocity = 100.0f;
	}
}

100.0fだと一秒間に約16回転ですね、速そう。

以上です。