UnityでTransformの値を設定する方法【初心者向け】

Unityで【Transform(トランスフォーム)】の値を設定する方法を初心者向けに解説した記事です。ゲームオブジェクトの位置(Position)、回転(Rotation)、縮尺(Scale)を決めることができます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

ゲームエンジンのUnityTransformの値を設定する方法を初心者向けに解説した記事です。

Transformとは、ゲームオブジェクトの位置(Position)、回転(Rotation)、縮尺(Scale)を決めるコンポーネント(設定項目の集まり)で、全てのゲームオブジェクトが持つ最も基本的なコンポーネントになります。

 

なお、本記事はTechAcademyのUnity入門オンライン講座の内容をもとにしています。

 

20163020-2

 

ここではオブジェクトのTransformを設定する練習をしてみよう。ゲームオブジェクト操作の一番の基本になるのでしっかりおさえておきたいね。

 

20160620

 

田島メンター!!Transformというのは何を指定するんですか~?

 

20163020-2

 

Transformは、オブジェクトの「位置」「回転」「縮尺」を設定するコンポーネントだよ。この値によって大きさや配置場所が決まるんだ。

 

20160620

 

なるほど、確かに大事な機能ですね。よろしくお願いします!

 

Transformの設定項目

Position

3Dのゲーム空間におけるゲームオブジェクトの位置です。
X, Y, Z軸それぞれの座標で設定します。

 

Rotation

ゲームオブジェクトのX, Y, Z軸に対する回転角度です。
度数法(度)で設定します。

 

Scale

ゲームオブジェクトの大きさの縮尺です。
X, Y, Z軸それぞれで設定し、「1」が元サイズになります。

 

では、実際にTransformを設定してみましょう。

 

事前準備

まずは、立方体(Cube)を作成します。

画面上部のタブで、[GameObject]→[Create Other]→[Cube]と選択します。
作成した「Cube」は、原点に配置してください。

[Inspector]タブの[Transform]で、[Position]の[X]、[Y]、[Z]の値を全て「0」にします。

001 002

 

次に、ライトを作成します。

画面上部の[GameObject]タブから、[Create Other]→[Directional Light]と選択します。
ライトは設定を変更しなくてもかまいませんが、今回はY座標を「5」にしておきます。

[Inspector]タブの[Transform]で、[Position]の[Y]の値を「5」にします。

003 004

 

Transformの設定には、シーンビュー([Scene]タブで表示されるウインドウ)を使うと便利です。
見やすいように画面表示を調節しましょう。

 

まず、シーンビュー上でマウスのホイール操作をすると、表示範囲を拡大縮小できます。

0056

 

また、作成した「Cube」が画面の中心にない場合、Unityの左上隅にある「手のひら」のアイコン(Viewツール)を選択しましょう。

000

 

この状態で、画面をクリックしたままマウスを動かすと、表示の中心位置を変えることができます。

0068

 

次に、Altキーを押した状態で画面をクリックし、マウスを動かしてみてください。

表示の向きを変えることができます。

0073

 

最後に、シーンビューの右上隅にあるシーンギズモ(Scene Gizmo)を見てください。

シーンギズモの下に[Iso](等角法モード)と表示されている場合は、ギズモ中心の四角をクリックして[Persp](遠近法モード)に切り替えます。
(どちらもTransformの設定には影響しませんが、今回は[Persp]を使用します。)

0082

 

以上で準備完了です。

ゲームを再生してみましょう。

0092

画面の中ほどに「Cube」が表示されます。

再生画面であるゲームビュー([Game]タブのウインドウ)を独立させておくと、作業がしやすくなります。

[Game]タブをドラッグ&ドロップすると、別ウインドウで表示させることができます。

 

20163020-2

 

Sceneタブでの基本的な操作をしっかり覚えておこう。これによって色々な角度からオブジェクトの状態を確認することが可能になるよ。

 

20160620

 

見たいものの近くに移動したり、オブジェクトを上や下から見たりもできるんですね。

 

20163020-2

 

それではTransformの設定を行ってみよう。各種値を変更して、画面内でどのように変わるか見てみるよ。

 

 

[PR] Unityを使ったゲーム開発で挫折しない学習方法を動画で公開中

Positionの設定

まずは、Positionを設定しましょう。

「Cube」のX座標を「1」にします。[Hierarchy]タブで「Cube」を選択してください。

そして、[Inspector]タブの[Transform]で、[Position]の[X]の値を「1」にします。

010

 

シーンビューで「Cube」がX軸の正方向(シーンギズモの[X]の方向)に移動しました。

ゲームビューでも右に移動しています。

011 012

[Y]、[Z]の設定についても同様です。

マイナス値を設定すると、逆方向に移動しますので、それぞれ確認してください。

 

Positionの設定には、ツールを使用することもできます。

Unityの左上隅にある下図のアイコン(Translateツール)を選択してください。

013-2

 

この状態で「Cube」を選択すると、シーンビュー上で「Cube」に赤青緑の矢印が表示され、編集可能な状態になります。

赤矢印をクリックした状態で、マウスを動かしてみましょう。

0141

「Cube」をX軸方向にのみ移動させることができます。
(Y軸、Z軸方向についても、それぞれの矢印から同様に操作できます。)

また、シーンビュー上で「Cube」をクリックしてマウスを動かすと、軸を固定せずに移動させることができます。

 

 

Rotationの設定

「Cube」の位置を原点に戻し、Rotationを設定しましょう。

[Hierarchy]タブで「Cube」を選択します。

そして、[Inspector]タブの[Transform]で、[Rotation]の[X]の値を「30」にします。

015

 

シーンビューで「Cube」が回転したことが確認できます。
(X軸の正方向を軸にして、反時計回りに回転します。)

 

ゲームビューでは、カメラがZ軸上の負方向に設置されていますので、「Cube」は上向きに回転したように見えます。

016 017

 

[Y]、[Z]の設定についても同様です。

マイナス値を設定すると、逆方向に回転しますので、それぞれ確認してください。

 

Rotationの設定には、ツールを使用することもできます。

Unityの左上隅にある下図のアイコン(Rotationツール)を選択しましょう。

018

 

この状態で「Cube」を選択すると、周囲に球状のラインが表示されました。

「Cube」をクリックしたままマウスを操作すると、回転させることができます。

0191

 

 

Scaleの設定

「Cube」の回転を元に戻し、Scaleを設定しましょう。

[Hierarchy]タブで「Cube」を選択します。

そして、[Inspector]タブの[Transform]で、[Scale]の[X]の値を「2」にします。

020

 

シーンビューで「Cube」の大きさが、X軸方向に2倍となりました。

ゲームビューでも、大きく表示されるようになっています。

021 022
[Y]、[Z]の設定についても同様ですので、それぞれ確認してください。
(「1」以下の値にした場合は小さくなります。)

Scaleの設定には、ツールを使用することもできます。

Unityの左上隅にある下図のアイコン(Scaleツール)を選択しましょう。

023

 

この状態で「Cube」を選択すると、シーンビュー上でScaleを編集可能な状態になります。

Positionの設定で使用したTranslateツールと同様に操作できるので、試してみてください。

0242-1

 

 

親子関係にあるゲームオブジェクトの設定

これまで説明したのは、親となるゲームオブジェクトがない場合の設定についてです。

親オブジェクトがいる場合、Transformの値は、親との相対値として処理されます。

 

Positionを例に説明します。[Cube]をもう一つ作成し、名前を「CubeChild」としてください。

設置位置は原点にします。

025

 

そして、[Hierarchy]タブで、「CubeChild」を「Cube」へドラッグ&ドロップします。

027

「Cube」の横に「▶︎」が表示され、展開すると「CubeChild」が含まれています。

それぞれ「Cube」を親オブジェクト、「CubeChild」を子オブジェクトと呼びます。

 

ここで、「CubeChild」の[Position]で、[X]の値を「2」にしてください。

028

 

「CubeChild」がX軸方向に「2」だけ移動します。

029

 

その後、「Cube」の[Position]で、[X]の値を「1」にしてみましょう。

030

「Cube」と「CubeChild」が同時にX軸方向に「1」ずつ移動します。

031

「CubeChild」の[Position]の値は、本来であれば[X]が「3」になりますが、「2」と表示されています。

これをローカル座標(Local Coordinates)と呼び、子オブジェクトの[Position]はローカル座標で表示されます。
(RotationやScaleの設定についても同様です。)

 

今回の記事は以上です。

 

20163020-2

 

親子関係を使うと、複数のオブジェクトを同時に操作することができるよ。

 

20160620

 

左上のツールでオブジェクトを操作すると、Transform内の該当の値が変化しているのが見えますね。

 

20163020-2

 

そうだね。Translateツールなどの操作中は、その操作に応じた値が表示されるんだ。自分のやりたい動作を設定する際の参考にしよう。

 

20160620

 

分かりました。ありがとうございます!

 

 

さらにUnityを使いこなしたい場合はUnityでmaterialを追加して色を変更する方法も合わせてご覧ください。

[お知らせ]TechAcademyではオリジナルゲームアプリが公開できるUnityオンラインブートキャンプを開催しています。現役Unityエンジニアのサポートで効率的に学びたい場合はご検討ください。