Transformクラスのメモ

Transformクラスのメモ


transform.Rotateについて


オブジェクトを直接、相対的に回転させる際に利用する。引数の渡し方で様々な機能が利用できる

  • オイラー角を指定して回転
transform.Rotate(Vector3.up * Time.deltaTime * 360,Space.World);

  • 軸をVector3、角度をfloatで指定して回転
transform.Rotate(Vector3.up,Time.deltaTime*360,Space.World);

上記のふたつのコードは似ているが、やってることは全く違うので注意
この関数に関して色々な引数の渡し方があるが出来る事はこの2種類である

Space.World はワールド座標
Space.Self はローカル座標

以下の二つは、どちらも引数の受け取り方は内部で違っているがオイラー角指定になっている点では共通
transform.Rotate(1,0,1); //Vector3 eulerAngles
transform.Rotate(1f,0f,1f); //float xAngle , float yAngle , float zAngle

update関数内などに書けば相対的に値は更新されるので、なにもしなくても回ってるオブジェクトが作れる
例えば風車の回る部分などに使うのが妥当かも・・・

transform.RotateAroundについて


中心となる位置を設定して、オブジェクトを回転させる関数です(オブジェクトの姿勢を変更する訳でなく、ワールドに対する「位置」を回転させる)
性質的にはpositionに対する操作になる(rotationに対しては全く操作しない)

_transform.RotateAround(Vector3.zero,Vector3.up,Time.deltaTime*90);

上記のように書くと原点を中心に+Y軸を軸として回転する
第一引数でワールド座標を指定してそこを中心に回転させる事が出来るので便利かも

Transform.eulerAnglesについて



引数で入力する値はオイラー角の絶対値である事に注意。ちなみにRotateは相対的、rotationは絶対的でQuaternion

<未翻訳部分>
変数を読み出すか絶対値の角度をセットする事だけに使用してください。360度を越える値はインクリメントに失敗します。
Transform.Rotateを代わりに使用してください。

単一軸のオイラー角を別々にセットしないでください(例:eulerAngles.x=10)
それらは意図通りに導かれず望まれない回転になります。新しく入力される値は即座に反映されUnityはその都度Transform.rotationにその角度を伝えます

・・・確認すると eulerAngles.x=10 のような事はエラーが出て出来なくなっている。対策済みの古い情報のようだ
とりあえず角度のインクリメントも出来なし、レガシーっぽい雰囲気なので使わない方が良い関数だと思う

  • 最終更新:2013-11-16 16:46:25

このWIKIを編集するにはパスワード入力が必要です

認証パスワード