オブジェクトを特定のベクトルに向かしたい時
向く方向(Direction)だけ分かっている場合はQuaternion.LookRotation関数を使う。
by http://docs-jp.unity3d.com/Documentation/ScriptReference/Quaternion.LookRotation.html
オイラー角について
理解しやすいGIF画像がこちらにあるhttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92
オブジェクトをその場で回転させるには
TransformのPositionを含まないTransformのQuaternionの中のオイラー角だけを操作すればいい。Positionは考えなくていいのでオブジェクトは原点にあるとイメージとしてもいい。
以下の二つは結果的に同じ事をしている
//第2引数である原点を通るY軸(new Vector3(0,1,0))を回転軸として180度回転させる transform.rotation = Quaternion.AngleAxis(180,new Vector3(0,1,0)); //第2引数は原点を通る軸の矢印部分(何も指定しなければデファルトで原点を通るY軸の矢印部分)を頭として第一引数である原点から伸びているベクトルの方向に振り向かせる transform.rotation = Quaternion.LookRotation(new Vector3(0,0,-1),new Vector3(0,1,0));
Quaternion.AngleAxis()とtransform.Rotate()関数の違い
//Quaternion.AngleAxis()は元のX,Y,Z座標を基準として回転するのに対して、transform.Rotate()はその現在の位置を基準として回転する。 //例えばUpdate関数にtransform.rotation = Quaternion.AngleAxis(10,new Vector3(0,1,0)); //とかいてもオブジェクトはUpdate関数が呼ばれる毎に回転しているように見えず静止しているように見えるが、 //transform.Rotate(0,10,0)はUpdate関数が呼ばれる毎には回転しているように見える void Update () { transform.rotation = Quaternion.AngleAxis(10,new Vector3(0,1,0)); transform.Rotate(0,10,0); }
Quaternionについて
http://docs-jp.unity3d.com/Documentation/ScriptReference/Quaternion.html