UnityでTransformの値を設定する方法【初心者向け】
Unityで【Transform(トランスフォーム)】の値を設定する方法を初心者向けに解説した記事です。ゲームオブジェクトの位置(Position)、回転(Rotation)、縮尺(Scale)を決めることができます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
この記事を書いた人
テックアカデミーマガジン編集部
ゲームエンジンのUnityでTransformの値を設定する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
Transform(トランスフォーム)とは、ゲームオブジェクトの位置(Position)、回転(Rotation)、縮尺(Scale)を決めるコンポーネント(設定項目の集まり)で、全てのゲームオブジェクトが持つ最も基本的なコンポーネントになります。
目次
- Transformの設定項目
- 事前準備
- Positionの設定
- Rotationの設定
- Scaleの設定
- 親子関係にあるゲームオブジェクトの設定
- Transform をプログラムで操作する
- まとめ
- Unityを学習中の方へ
そもそもUnityについてよく分からないという方は、Unityとは何なのかについて解説した記事を読むとさらに理解が深まります。
ここではオブジェクトのTransform(トランスフォーム)を設定する練習をしてみよう。ゲームオブジェクト操作の一番の基本になるのでしっかりおさえておきたいね。
田島メンター!!Transformというのは何を指定するんですか~?
Transformは、オブジェクトの「位置」「回転」「縮尺」を設定するコンポーネントだよ。この値によって大きさや配置場所が決まるんだ。
なるほど、確かに大事な機能ですね。よろしくお願いします!
Transformの設定項目
Position
3Dのゲーム空間におけるゲームオブジェクトの位置です。
X, Y, Z軸それぞれの座標で設定します。
Rotation
ゲームオブジェクトのX, Y, Z軸に対する回転角度です。
度数法(度)で設定します。
Scale
ゲームオブジェクトの大きさの縮尺です。
X, Y, Z軸それぞれで設定し、「1」が元サイズになります。
では、実際にTransformを設定してみましょう。
事前準備
まずは、立方体(Cube)を作成します。
画面上部のタブで、[GameObject]→[3D Object]→[Cube]と選択して「Cube」を作成します。
Hierarchyタブで「Cube」が作成されたことを確認できます。
作成した「Cube」を原点に配置してみましょう。
[Inspector]タブの[Transform]で、[Position]の[X]、[Y]、[Z]の値を全て「0」に設定します。
([Inspector]タブには、[Hierarchy]タブで選択されているオブジェクトの設定項目が表示されます。)
次に、ライトを作成します。
画面上部のタブで、[GameObject]タブから、[Light]→[Directional Light]と選択します。
Hierarchyタブで「Directional light」が作成されたことを確認できます。
作成したライトは設定を変更しなくてもかまいませんが、今回は座標を「0,2,0」(先程作成したCubeの真上)に設定します。
Transformの設定には、シーンビュー([Scene]タブで表示されるウインドウ)を使うと便利です。
HierarchyタブでCubeを選択して、[Edit]→[Frame Selected]を選択すると、選択したオブジェクト(今回の場合はCube)がシーンビューの画面に収まるように調整されます。
(シーンビュー上にマウスカーソルを乗せ、キーボードのFキーを押すことでも同様の操作になります。)
シーンビューでCubeの全体がカメラに収まるように移動します。
それでは、シーンビューの基本操作を解説します。
カメラを自由に動かして、オブジェクトを好きな角度から見ることに慣れてみましょう。
まずは視点の並行移動です。
マウスの真ん中ボタン(ホイール)をクリックしながら動かすことで、カメラを並行移動できます。
多くの場合この操作でカメラのおおまかな位置を調整します。
次に注視点の操作です。カメラの位置は変えずに見ている方向だけを変えます。
マウスを右クリックしながら動かすことで、注視点を動かすことができます。
キャラクターなどを見るには向いていない操作ですが、広いマップの中を見回したりする場合に使用することが多い操作です。
次は視点の移動です。カメラが見ている位置は変更せずに、カメラの位置だけを移動します。
Windowsの場合はキーボドの「Alt」Macの場合はキーボードの「Option」を押しながら、マウスを左ドラッグします。
キャラクターなどのオブジェクトを色々な方向から確認する際に多様する操作です。
最後に、カメラの前後操作です。
マウスホイールを上下に操作することで、カメラを前後に移動できます。
ズーム倍率を変えているのではなく、実際にカメラが前後に移動しています。
シーンビューでの基本操作は以上です。
もう一つ、シーンビューの右上隅にあるシーンギズモ(Scene Gizmo)を見てください。
シーンギズモの下に[Iso](等角法モード)と表示されている場合は、ギズモ中心の四角をクリックして[Persp](遠近法モード)に切り替えます。
(どちらもTransformの設定には影響しませんが、今回は[Persp]を使用します。)
以上で準備完了です。
ゲームを再生してみましょう。
画面の中ほどに「Cube」が表示されます。
再生画面であるゲームビュー([Game]タブのウインドウ)を独立させておくと、作業がしやすくなります。
[Game]タブをドラッグ&ドロップすると、別ウインドウで表示できます。
Sceneタブでの基本的な操作をしっかり覚えておこう。これによって色々な角度からオブジェクトの状態を確認することが可能になるよ。
見たいものの近くに移動したり、オブジェクトを上や下から見たりもできるんですね。
それではTransformの設定を行ってみよう。各種値を変更して、画面内でどのように変わるか見てみるよ。
Positionの設定
まずは、Position(座標、位置)を設定しましょう。
「Cube」のX座標を「1」にします。[Hierarchy]タブで「Cube」を選択してください。
そして、[Inspector]タブの[Transform]で、[Position]の[X]の値を「1」にします。
シーンビューで「Cube」がX軸の正方向(シーンギズモの[X]の方向)に移動しました。
ゲームビューでも右に移動しています。
[Y]、[Z]の設定についても同様です。
マイナス値を設定すると、逆方向に移動しますので、それぞれ確認してください。
Positionの設定には、ツールを使用することもできます。
Unityの左上隅にある下図のアイコン(Translateツール)を選択してください。
このツールはキーボードの左上の「Q,W,E,R」にショートカット対応しています。
Translateツールは「W」キーを押すことでも選択できます。
この状態で「Cube」を選択すると、シーンビュー上で「Cube」に赤青緑の矢印が表示され、編集可能な状態になります。
赤矢印をクリックした状態で、マウスを動かしてみましょう。
「Cube」をX軸方向にのみ移動させることができます。
(Y軸、Z軸方向についても、それぞれの矢印から同様に操作できます。)
また、シーンビュー上で「Cube」をクリックしてマウスを動かすと、軸を固定せずに移動できます。
Rotationの設定
「Cube」の位置を原点に戻し、Rotationを設定しましょう。
[Hierarchy]タブで「Cube」を選択します。
そして、[Inspector]タブの[Transform]で、[Rotation]の[X]の値を「30」にします。
シーンビューで「Cube」が回転したことが確認できます。
(X軸の正方向を軸にして、反時計回りに回転します。)
ゲームビューでは、カメラがZ軸上の負方向に設置されていますので、「Cube」は上向きに回転したように見えます。
[Y]、[Z]の設定についても同様です。
マイナス値を設定すると、逆方向に回転しますので、それぞれ確認してください。
Rotationの設定には、ツールを使用することもできます。
Unityの左上隅にある下図のアイコン(Rotationツール)を選択しましょう。
ショートカットキーでは、「E」が該当します。
この状態で「Cube」を選択すると、周囲に球状のラインが表示されました。
「Cube」をクリックしたままマウスを操作すると、回転させることができます。
Scaleの設定
「Cube」の回転を元に戻し、Scaleを設定しましょう。
[Hierarchy]タブで「Cube」を選択します。
そして、[Inspector]タブの[Transform]で、[Scale]の[X]の値を「2」にします。
シーンビューで「Cube」の大きさが、X軸方向に2倍となりました。
ゲームビューでも、大きく表示されるようになっています。
[Y]、[Z]の設定についても同様ですので、それぞれ確認してください。
(「1」以下の値にした場合は小さくなります。)
Scaleの設定には、ツールを使用することもできます。
Unityの左上隅にある下図のアイコン(Scaleツール)を選択しましょう。
ショートカットキーは「R」です。
この状態で「Cube」を選択すると、シーンビュー上でScaleを編集可能な状態になります。
Positionの設定で使用したTranslateツールと同様に操作できるので、試してみてください。
親子関係にあるゲームオブジェクトの設定
これまで説明したのは、親となるゲームオブジェクトがない場合の設定についてです。
ゲームオブジェクトは入れ子(親子関係を設定)にすることができます。
親オブジェクトがいる場合、Transformの値は、親オブジェクトとの相対値として処理されます。
Positionを例に説明します。[Cube]をもう一つ作成し、名前を「CubeChild」としてください。
設置位置は原点にします。
そして、[Hierarchy]タブで、「CubeChild」を「Cube」へドラッグ&ドロップします。
「Cube」の横に「▶︎」が表示され、展開すると「CubeChild」が含まれています。
それぞれ「Cube」を親オブジェクト、「CubeChild」を子オブジェクトと呼びます。
ここで、「CubeChild」の[Position]で、[X]の値を「2」にしてください。
「CubeChild」がX軸方向に「2」だけ移動します。
その後、「Cube」の[Position]で、[X]の値を「1」にしてみましょう。
「Cube」と「CubeChild」が同時にX軸方向に「1」ずつ移動します。
「CubeChild」の[Position]の値は、本来であれば[X]が「3」になりますが、「2」と表示されています。
これをローカル座標(Local Coordinates)と呼び、子オブジェクトの[Position]はローカル座標で表示されます。
この場合、「CubeChild」のグローバル座標は、[X]が「3」になっており、ローカル座標は[X]が「2」になっているといえます。
(RotationやScaleの設定についても同様です。)
今回の記事は以上です。
親子関係を使うと、複数のオブジェクトを同時に操作することができるよ。
左上のツールでオブジェクトを操作すると、Transform内の該当の値が変化しているのが見えますね。
そうだね。Translateツールなどの操作中は、その操作に応じた値が表示されるんだ。自分のやりたい動作を設定する際の参考にしよう。
分かりました。ありがとうございます!
Transform をプログラムで操作する
Transform はプログラム(C# Script)でも操作することができます。
ここでは Cube を回転させてみようと思います。
Assets フォルダに Scripts というフォルダを用意します。
Scripts フォルダを右クリックし C# Script を作成します(名前は Rotate とします)
Rotate の中身は以下の通りにします。
using UnityEngine;
public class Rotate : MonoBehaviour
{
// 回転速度
private float rotSpeed = 0.5f;
void Start()
{
//回転を開始する角度を設定
this.transform.Rotate(0, Random.Range(0, 360), 0);
}
void Update()
{
//回転
this.transform.Rotate(0, this.rotSpeed, 0);
}
}
上記の Script を Cube に設定します。Inspector の Add Component というボタンをクリックすると
検索ボックスが出てくるので「Rotate」と入力して、先ほど作成した Rotate を選択してください。
以下のようになっていれば、設定完了です。
この状態で Editor でゲームを再生すると以下のように回転します。
まとめ
Transform を利用してゲームオブジェクトの位置(Position)、回転(Rotation)、縮尺(Scale)を変更することで、オブジェクトを自分の思い通りに操作することができます。
ゲームに動きを作るための基本的な要素となりますので、ぜひ勉強してみて下さい。
さらにUnityを使いこなしたい場合はUnityでmaterialを追加して色を変更する方法も合わせてご覧ください。
Unityを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
Unityを学習していて、このように思ったことはありませんか?
テックアカデミーでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、はじめてでもUnityでオリジナルゲームの制作ができるようになります。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!