BLOG ブログ

ENTRY

お申し込みはこちら

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

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

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

3つのステップ

Vector3 kero = new Vector3();  //①仮の変数宣言&初期化

kero.x = 45; //②変数keroのx軸の回転を45に書き換え

gameObject.transform.eulerAngles = kero; //③回転座標に変数keroを代入


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

今の向きから変化させたいとき

少しずつ向きを動かしたい場合は毎フレーム現在の向きを代入して変更を加えればよい。x軸に1ずつ回転するサンプルは下記のようになる。

Vector3 kero;  //①仮の変数宣言

kero = gameObject.transform.eulerAngles; //◆現在の向きを代入

kero.x = kero.x +1; //②変数keroのx軸の向きを1増やして代入

gameObject.transform.eulerAngles = kero; //③向きに変数keroを代入

よくある落とし穴

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

gameObject.transform.eulerAngles.x = 1;


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

CONTACT お問い合わせ

無料体験授業は随時開催しています。
ご希望やご質問など、お気軽にお寄せください。