##勝手に倒れるオブジェクト
rotationを利用して、オブジェクトがランダムに傾くのをキーで操作する方法を紹介します。
z軸を使って回転します。
UnityではQuaternionで回転数を決めているので、先に宣言。
new Vector3のzの値にRandom.Rangeを使って1-4までの乱数を返します。
これにより、ランダムで傾きます。
void Update()
{
Quaternion quaternion = this.transform.rotation;
float rot_z = quaternion.eulerAngles.z;
transform.Rotate(new Vector3(0, 0, Random.Range(1,4)));
}
##キーで傾きを制限
この傾きをキーを使って戻したり、するためには下記のコードを追加。
zの値は乱数の最大値よりも大きな値を設定します。
void Update()
{
Quaternion quaternion = this.transform.rotation;
float rot_z = quaternion.eulerAngles.z;
transform.Rotate(new Vector3(0, 0, Random.Range(1,4)));
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Rotate(new Vector3(0, 0, -6));
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Rotate(new Vector3(0, 0, 6));
}
}
##下重心にする
しかし、上記のスクリプトをただオブジェクトにアタッチした場合、こうなります。
なので、今回は重心を下にしてplaneにCapsulの面が触れながら傾きたかったので、
空のGameObjectを作成します。
そしてpositionを重心を置きたい位置に合わせます。
今回はここ。
そして、
###空のGameObjectを親にして、Capsuleを子にします。
スクリプトをアタッチするのは空のGameObjectの方です。
すると、このように傾きます。
人間を傾ける時なんかは足がついていないといけないので、この方法が利用できるかなと思います。