Unitydeでキャラクターの回転とカメラの回転を同期させる方法
スポンサーリンク
使用する言語はjavascriptです。
例えば「←」を押すとキャラが左に回転しそれと同時にメインカメラも左に回転するようにします。
キャラの回転スクリプトはある物として書いていきます。
あるオブジェクトのRotation(回転角度)の取得
Transform>Rotationのx,y,zの値を取得します。
まずターゲットするオブジェクトを呼び出します。
ターゲットを入れる変数の宣言をします。
public var target : GameObject;
targetは任意の名前に変えても大丈夫です。
ターゲットオブジェクトを変数targetと紐付けします。
target=GameObject.Find("@@@@");
@@@@はターゲットにしたいオブジェクトのHierarchyに書かれている名前に変更してください。
targetは上で宣言した変数名と一致させてください。
これで変数targetは指定したオブジェクトを指すようになります。
カメラをオブジェクトの回転に合わせて回転させる
this.transform.rotation= Quaternion.Euler(0,target.transform.localEulerAngles.y,0);
「this.transform.rotation」でカメラの回転(角度)を直接変更します。 「Quaternion.Euler()」でオイラー角度で回転させるようにさせます。
「0,target.transform.localEulerAngles.y,0」は(x,y,z)を表しており「x」は0°固定、「y」はターゲットのオブジェクトと同じ角度(この場合はy軸方向に水平に回転)、「z」は0°固定。
スポンサーリンク
Rotationの値を表示されたまま取得する
「target.transform.y」でもいけそうな気がしますが、コレでは0度~360度と言った扱いやすい数値では無いものが出力されます。
ですのでオブジェクト自身の角度を取得するためには「target.transform.localEulerAngles.y」と書く必要が有ります。
コード全体
#pragma strict public var target : GameObject; function Start () { } function Update () { target=GameObject.Find("@@@@");</pre> <pre>//@@@@は指定したいオブジェクトのHierarchyでの名前に変更する。 this.transform.rotation= Quaternion.Euler(0,target.transform.localEulerAngles.y,0); }