ゲーム空間を作るにあたって、オブジェクトの設置は必須ですよね。

UnityのTransform(トランスフォーム)は、オブジェクトの位置や向き、大きさを調整するためのコンポーネントです。

本記事では「Unityでゲームを作ってみたいのだけど…」という方に向けた入門編として、Transformの基本的な扱い方についてご紹介いたします。

Unityでのゲーム開発を行う上で絶対に知っておくべき要素なので、ぜひ最後までお付き合いください。

|Unityとは

出典:https://unity.com/ja

Unityは、Unity Technologiesによって開発されたゲームエンジンです。

2Dおよび3Dゲームの開発が可能であり、Windows、macOS、スマートフォン、Nintendo Switchなどさまざまなプラットフォームに対応しています。

Unityはプログラミングの知識がなくても直感的に扱うことができるため、初心者でも簡単にゲーム開発を始められることが特徴です。

また、豊富な機能とリソースが提供されているため、本格的なゲーム開発を行うこともできます。

Unityは世界で最も人気のあるゲームエンジンの1つであり、MinecraftやFortniteといった様々な人気タイトルがこのエンジンを用いて開発されています。

|Transformとは

Transformは、Unity上でオブジェクトやライトなどを設置すると自動でアタッチされる削除のできないコンポーネントで、次の3つのプロパティがあります。

・Position:X,Y,Z座標に基づく位置

・Rotation:X,Y,Z軸を基準とした回転角(°)

・Scale:X,Y,Z軸に沿った大きさ

Inspector上で上記のプロパティに任意の数値を入力、あるいは直接Sceneでオブジェクトを動かしたり回したりすることで値を変更できます。

また、Transformには先ほどの3つのプロパティの他に、「階層化」や「親・子」と呼ばれる重要な要素があります。

位置・回転・大きさについては直感的に理解できると思うので、この「階層化」がTransformをマスターする上で最も苦戦するかもしれません。

それぞれの要素の詳細については、これから説明いたします。

|Transformでできること

さてここからは、実際にTransformを使ってどのようなことができるのか紹介したいと思います。

先ほどちらっとお話した「階層化」についても説明するのでぜひお読みください。

位置を変える

まずTransformでは、Positionのパラメーターをいじることでオブジェクトの位置を変更できます。

最初から最後までキャラクターやオブジェクトがある地点にとどまり続けるゲームってなかなかないですよね。

そういうわけで、位置を変えることはゲーム作りにおいて必須の要素であると言えます。

3Dゲームを作る場合は(X, Y, Z)の3成分、2Dゲームの場合は(X, Y)の2成分に基づいて位置を変更します。

あるオブジェクトに触れるとどこかの地点までワープする、といったような仕掛けもPositionの座標を変更することで実装できます。

Positionについて理解するだけでも、ごく簡単なゲームを作ることができるでしょう。

回転させる

Transformでできることの2つ目は、オブジェクトの回転です。

回転を利用することで、プレイヤーが入力に合わせて右や左を向いたり、カメラの向きを変更したりできます。

また、あるトリガーが作動することでゲーム内のオブジェクトが回転したり、プレイヤーが反対を向いたりするといった仕組みもTransformのRotationを活用することになります。

3DではX軸・Y軸・Z軸を中心に、2DではX軸とY軸を中心に回転させることができます。

先ほどのPositionとこのRotationをマスターすれば、プレイヤーがゲームのフィールド上を自在に動き回るといったアクションを実装できるでしょう。

拡大・縮小させる

Transformでできること3つ目は、オブジェクトの拡大と縮小です。

現実世界でも、人や物はさまざまなサイズで存在していますよね。

ゲームを作る際にも、例えば森などで草木が全て同じサイズでは違和感があります。

そんなときにTransformコンポーネントのScaleを調整して大きさを変更します。

Scaleも3Dの場合はX軸・Y軸・Z軸の各方向に、2Dの場合はX軸・Y軸の方向に拡大や縮小を行うことができます。

Scaleを駆使すれば、一定の大きさまで大きくなったら爆発するといったようなアニメーションギミックを作成することもできます。

階層化する

最後に「階層化」について説明します。

Unityにはワールド座標とローカル座標というものがあります。

ワールド座標ではSceneの中心が原点となる一方、ローカル座標ではあるオブジェクトの中心が原点となります。

これではわかりにくいと思うので、もう少し具体的に説明していきます。

基本的にHierarchy上で新しいオブジェクトを設置すると縦に整列してオブジェクトが表示されます。

この状態ではそれぞれのCubeは独立しています。

HierarchyのCubeを異なるCubeにドラッグしていくと以下のように並べられます。

これを「階層化する」といい、上側が「親」、下側が「子」と呼ばれます。

つまり、CubeはCube(1)の親、Cube(1)はCubeの子かつCube(2)の親…となり、各オブジェクトが移動・回転・拡大縮小する際には自分の親が基準となります。

この親を基準としたときの座標がローカル座標です。

親のScaleが(2,2,2)で子のScaleが(1,1,1)だった場合、ワールド基準では子オブジェクトのScaleは(2,2,2)となります。

この階層化をうまく利用すれば、プレイヤーに追従するペットなどを実装することができます。

|それぞれの機能の使い方

Transformで何ができるのかお伝えしたところで、最後にそれぞれの機能の使い方をご紹介します。

Unityでは、X軸が赤、Y軸が黄緑、Z軸が青で表されるので、そちらを踏まえてご覧ください。

位置を変える方法

位置を変える方法は3通りあります。

①Scene上で直接オブジェクトを動かす

任意のオブジェクトを設置・選択し、Sceneビュー左上で「Move Tool」モードにします。

そして、矢印あるいは面を持ってドラッグすることで、X,Y,Z軸方向やXY,YZ,ZX平面方向に自在にオブジェクトを移動させることができます。

②Positionに数値を入力する

TransformコンポーネントのPositionに任意の数値を入力して位置を変更できます。

①の方法でもPositionの数値が変わっていますが、数値を直接指定することで、真っ直ぐ配置したり微調整したり細かく位置を決定できます。

③Positionの入力欄にカーソルを合わせる

Position入力欄の左端にカーソルを合わせると、画像のように◃▹が表示されます。

この状態で右にドラッグするとその軸の正の方向、左にドラッグすると負の方向に移動します。

①や③は直感的に、②はロジック的に配置することができます。

回転させる方法

続いては、オブジェクトを回転させる方法です。

こちらも位置の変更同様、3通りの方法があります。

① Scene上で直接オブジェクトを回す

Scene左上で「Rotate Tool」に切り替えます。

そして、いずれかの弧を持って回転させたい方向にドラッグすると、オブジェクトを回転させることができます。

②Rotationに数値を入力する

45度、90度、180度…といったように決まった角度に回転させたい場合は、TransformコンポーネントのRotationに数値(単位:°)を入力する方法が便利です。

例えば、地面と垂直の方向に時計回りに90度回転させたいという場合は、RotaionのYに90と入力します。

マイナスでも入力できるので、反時計回りに90度回転させたいという場合は-90と入力します。(もちろん、270と入力してもOKです)

③Rotationの入力欄にカーソルを合わせる

位置の場合と同じで、◃▹を表示することでも回転させられます。

このとき、右にドラッグすると正、左にドラッグすると負に数値が変わります。

拡大・縮小させる方法

最後に、オブジェクトの大きさの変更方法です。

お気づきの方もいるかと思いますが、大きさを変える方法も3通りあります。

①Scene上で拡大・縮小する

Scene左上から「Scale Tool」を選択します。

そして、スケールを変更したい方向の立方体をドラッグすると自在に大きさを変えられます。

また、オブジェクトの原点(白い立方体)をドラッグすると、縦・横・奥行の比率はそのままに大きさを変更できます。

②Scaleに数値を入力する

TransformコンポーネントのScaleに任意の数値を入力することでも拡大・縮小ができます。

このとき、Scaleの横にあるリンクアイコンを有効にすると、比率を維持したまま大きさを変えることができます。

つまり、(X,Y,Z)が(1,1,1)のときXに2と入力すると、YとZの値も自動的に2に変更されるということです。

③Scaleの入力欄にカーソルを合わせる

PositionやRotation同様、◃▹でも大きさが変更できます。

また、この方法でも②で紹介したように比率維持の有効・無効を切り替えられます。

|まとめ

いかがでしたか。

プログラミングの知識のない初心者でも、UnityがScene上で直感的に扱うことができる開発エンジンであるということがおわかりいただけたでしょうか。

自作ゲームを開発してみたいけど今から勉強するのは…という方も、ぜひUnityを使って挑戦してみてください。

そのときにこの記事が少しでもお役に立てれば幸いです。

最後までお付き合いいただきありがとうございました。