【Unity】回転の方法が一目でわかる !transform.Rotateを極めよう!

Unityの回転は初心者にとって鬼門なのではないでしょうか。

Quaternionなど新たな用語が登場してきて混乱したり、ワールド座標やローカル座標が絡んできたり…

なぜか思い通りの方向を、向いてくれなかったり…

回転については、私も苦労したものです。

とはいえUnityでの開発と回転は、切っても切り離せない関係です。

例えば動き回るキャラクターに、カメラの方向を向け続けるだけでも、回転の知識は必要になってきます。

ライトも回転の方向を間違えれば、画面が薄暗くなってしまうでしょう。

ゲームで魔法を飛ばすにしても、出す方向を間違えればお尻からでることになります。

今回はそんなUnityの回転についてです。

まずは以下のように、基本的な内容を学びましょう。

・transform.rotationとは?

続けて実際に動くサンプルを用意しておきました。

・transform.rotation の取得・変更
・Rotate関数による回転

実際に動かして挙動を確認してみてください!

それで一緒にUnityの回転について見ていきましょう。

transform.rotationとは?

まずは、transformが何者なのか見てみましょう!

まずはtransformとは

簡単に言ってしまうと、オブジェクトの位置回転サイズを保持しているクラスです。

早速公式のリファレンスを見てみましょう。

オブジェクトの位置、回転、スケールを扱うクラス

シーン内のすべてのオブジェクトは Transform を持ちます。
Transform はオブジェクトの位置、回転、スケールを格納し、操作するために使用されます。
すべての Transform は親を持ち、階層的に位置、回転、スケールを適用することができます。
これはヒエラルキーウインドウで階層を見ることができます。

参照元:https://docs.unity3d.com/ja/current/ScriptReference/Transform.html

「位置、回転、スケールを格納し、操作するために使用されます。」という部分です。

「transform」には位置、回転、スケールが保持されているんです。

そう、今回の主役となるオブジェクトの回転の情報が保持されているわけです!

またtransfromについてもっと詳しく知りたい方はこちらの記事を御覧ください。

【Unity】transformを使いこなす!座標・回転など自在に操作しよう!
更新日 : 2018年12月18日

transform.rotationとは?

「transform」には回転が保持されていることがわかりました。

どこに保持されているのかというとtransform.rotationです!

しかしこのtransform.rotationですが、実は角度などではなくQuaternion型で保持されています。

ですがQuaternionは少し難しいため、今回は簡単に角度で編集出来るVecrot3型を使用する回転方法について見ていくことにします。

ただ、自由自在な回転を行うためには、Quaternionも重要な機能なため、ぜひ合わせてマスターしましょう。

Quaternionについても、後日記事を追加予定なのでもうしばらくおまちください!

transform.rotation の取得・変更

では実際に、取得・変更する方法について見ていきましょう。

下準備

まずは今回使用するオブジェクトを準備しましょう。

何かオブジェクトを作成し、新たにスクリプトをAddComponentしてください。

unity-transform-12

上の画像は、以下の流れで作った例です。

①Hierarchy上で「右クリック→3DObject→Cube」とCubeオブジェクトを作り選択し。
②「AddComponent ボタンをクリック→NewScript→MainCharacterという名前でCreateAndAdd」

スクリプトがついたオブジェクトの作り方がわからない人は参考にしてみてください。

このあとは、紐付いたスクリプトをダブルクリックなどすればプログラムを開くことができます。

ワールド座標・ローカル座標について

ここから先の説明ではワールド座標・ローカル座標といった単語が出てきていますが、transformの記事にて説明をおこなっています。

わからない方はぜひこちらの記事もご覧下さい。

【Unity】transformを使いこなす!座標・回転など自在に操作しよう!
更新日 : 2018年12月18日

とはいえ、初心者の方は基本的には、まずは見た目通りに動いてくれるワールド座標を扱えば問題ないと思います。

まずはワールド座標を使い回転を行ってみましょう。

より難しいことを実現しようとした際には、ローカル座標にぶつかることがあると思いますので、その時改めて学んでみましょう!

transform.rotation の取得方法

以下の方法で、x軸を軸にした角度などを取得できます。

360度で一周する角度という形で、数字をとることができます。

ワールド座標を基準にした角度を取得

各軸による回転角度をfloat型として取得しています。

ローカル座標を基準にした角度を取得

こちらはローカル座標を基準に取得しています。

transform.rotation の変更方法

では次に変更する方法です。

見ていただければ分かる通り、取得した変数を変更して、再度代入を行っています。

こうすることで現在の角度を変更することができます。

ワールド座標を基準にした角度の変更方法

取得した角度を10度に変更し、上書き変更しています。

ローカル座標を基準にした角度の変更方法

ローカル座標という違いはあれど、こちらもやっていることは同じですね!

Rotate関数による回転

先ほどまでは直接代入するようなプログラムを書きました。

次は、今回のタイトルにもなっているtransform.Rotateを使った角度変更の方法を見てみましょう。

Rotate関数を使用すると、現在の回転量から追加で回転を行うことができます。

単純に言ってしまえば、現在の角度へ、指定した角度を加算する処理となります。

非常にわかりやすいですね!

またこのRotate関数は、第4引数に「Space.World」を送ることで、ワールド座標基準で回転が可能であることを覚えておきましょう。

ワールド座標を基準にした角度の変更方法

こちらを実行すると、角度が加算されオブジェクトは回転し続けます。

ローカル座標を基準にした角度の変更方法

親に違いがなければ、ワールド座標でのRotateと同じ挙動をするはずです。

まとめ

今回は非常に簡単にですが、角度を指定してオブジェクトを回転させる方法について見てきました。

回転はUnityを扱う上でとても重要な機能です。

ぜひ、今回覚えた回転方法を活用してみてください。

またこの記事では省きましたが、Quaternionでのオブジェクトの回転方法も学んでみてください。

「例えばカメラをキャラクターに向ける」なんてことが非常に簡単に行えます!

Quaternionの記事は後日追加予定なので、もうしばらくお待ち下さい。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説