Unity でオブジェクトを回転させるには transform.rotate などを使用しますが、通常はそのオブジェクトの重心(何もしてなければ中央)を中心に回転します。
ある点を中心に回転させる
ある物体の周囲を回るといったふうな動作を行うにはどうするか。
ただ回すだけで良いなら transform.RotateAround メソッドを利用するのが便利です。
transform.RotateAround(new Vector3 (1, 0, 1), transform.up, 45*Time.deltaTime);
}
上記のように記述すると Vector3 (1, 0, 1) を基点にして Y 軸を回転します。
Rigidbody 付きのオブジェクトを回転させるには
RotateAround ではオブジェクトをすり抜けたりして障害物として使えないなど不便な点があります。
そして、Rigidbody を使用した回転を行うには rigidbody.angularVelocity を利用するのですが、回転軸を指定できません。
そんな時は、Rigidbody.centerOfMass をいじって回転軸を変更してしまいましょう。
void start() {
rigidbody.centerOfMass = new Vector3(0, 0, 1);
}
void Update () {
rigidbody.angularVelocity = new Vector3(0, 1, 0);
}
このようにする事で回転の中心を変更する事ができ、ある点を中心としてオブジェクトを回す事ができます。
Sponsored Link