【Unity】スクリプトから回転・姿勢を変更する

 「【Unity】スクリプトから位置座標を変更する」とほぼ同じだがrotation【ローテーション】ではなくeulerAngles【オイラーアングルズ】を使うことに注意。
 手順は大きく以下3つ。
①仮の変数に今の座標取得
②仮の変数の値を変更
③オブジェクトの座標に仮の変数を代入

 代入という言葉がわからない場合は「【C#】代入のはなし」を参照。またVector3【ベクタースリー】という言葉がわからない場合は「【Unity】Vector3がざっくりわかるはなし」を参照。さらにTransform【トランスフォーム】コンポーネントについては「【Unity】位置、回転、大きさを変える」も参照しておくことを推奨。

Vector3 kero = new Vector3();  //①仮の変数宣言&初期化
kero.x = 1;                           //②変数keroのx座標を1に書き換え
gameObject.transform.eulerAngles = kero; //③位置座標に変数keroを代入

 本来スクリプトからコンポーネントの変数にアクセスするときは同じオブジェクトであってもコンポーネントの指定や取得をしておく必要があるが、Transformは基本的にどのオブジェクトにも標準搭載なので省略できる。

 よくある落とし穴のポイントとして以下のように直接eulerAnglesの座標を変更したくなるが、これはできない仕様。Vector3で代入できるので仮のVector3型変数を作っている。

//エラーになるパターン
gameObject.transform.eulerAngles.x = 1;

 また、勘のいい方はrotationで動かせるかと思ってしまうがこれもエラー。transform.rotationはVector3ではなくQuaternion【クオータニオン】という型で保存されている。普段私達が使っているオイラー角で代入するためにはeulerAnglesを指定すればよい。

Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA