Transform (トランスフォーム) はゲームオブジェクトの位置、回転、スケール (拡大/縮小) と親子関係を保持するので非常に重要です。ゲームオブジェクトには常に Transform コンポーネントが設定されています。Transform コンポーネントをはずしたり、Transform コンポーネントなしにゲームオブジェクトを作成することはできません。
Transform コンポーネントは、シーン内の各オブジェクトの Position、Rotation、Scale を決定します。すべてのゲームオブジェクトは Transofrm を持ちます。
プロパティ | 機能 |
---|---|
Offset | X、Y、Z 座標でのトランスフォームの位置 |
Rotation | X、Y、Z 軸を中心とするトランスフォームの回転角 (単位: 度) |
Scale | X、Y、Z 軸に沿ったトランスフォームのスケール。1 の場合は、元の大きさ (オブジェクトがインポートされた大きさ) になります。 |
Transform のプロパティはすべて、Transform の親に対して相対的に設定されます。親がない場合、プロパティはワールド空間に基づき設定されます。
Transform は X、Y、Z 軸による3 次元空間、または、X、Y 軸による 2 次元空間で操作されます。Unity で、これらの軸はそれぞれ、赤、緑、青で表示されます。
Transform はシーンビュー上で編集したり、Inspector 上でプロパティの値を変更することよって編集できます。シーンでは Move (移動)、Rotation (回転)、Scale (スケール) 等のツールを使用して Transform を変更することもできます。これらのツールは Unity エディターの左上に配置されています。
ツールはシーン内のすべてのオブジェクトで使用することができます。オブジェクトをクリックすると、ギズモが表示されます。ギズモの形は、選択したツールによります。
表示されているギズモの 3 軸のうち 1 つをクリックアンドドラッグすると、選択した軸が黄色になります。マウスをドラッグすると、選択した軸に沿ってオブジェクトが移動、回転、伸縮します。マウスボタンを離しても、軸は選択されたままです。
追加のオプションとして特定の平面への移動をロックするモードもあります。つまり、1 つの軸を固定しながら、残りの 2 つの軸をドラッグすることができます。Translate (移動) ギズモの中央付近にある 3 つの小さい色付き四角形は、各平面のロックをアクティブにします。色は、その四角形のクリックによってロックされる軸に対応します (例えば、ロックは青い四角形をクリックすると Z 軸をロック)。
親子関係は Unity で最も重要なコンセプトの 1 つです。ゲームオブジェクトが他のゲームオブジェクトの 親 であるとき 子 のゲームオブジェクトは親のゲームオブジェクトを基準として移動、回転、拡大縮小されます。親子関係は腕と体の関係のように考える事ができます。つまり、体が移動すれば腕が移動すると言う事です。子オブジェクトもまた子を持つことができ、その子もまた、同様です。ですから、手を腕の “子供” と見なし、各手は複数の指を “子供” として持っているとみなすことができます。あらゆるゲームオブジェクトは複数の子オブジェクトを持つ事ができますが、親は 1 つのみです。親子関係のこれら複数の階層は、Transform の 階層 (Hierarchy) を形成しています。階層で最も上位にあるオブジェクト (つまり、階層内で親を持たない唯一のオブジェクト) は ルート と呼ばれます。
Hierarchy ウィンドウ で任意のゲームオブジェクトを他のゲームオブジェクト上にドラッグすると親を作成できます。この操作によって 2 つのゲームオブジェクトを親子関係にできます。
子ゲームオブジェクトの Inspector に表示される Transform の値は、親の Transform の値を基準として表示されていることに注意してください。これらの値は ローカル座標 と呼ばれています。体と腕の関係で例えるならば、歩くときに体の位置が移動してもあなたの腕が基準とする位置は同じであるということです。シーンの構成上、通常は、子オブジェクトに関してはローカル座標での作業で十分です。ただし、ゲームプレイでは、しばしばワールド空間や グローバル座標 で正確な位置を確認することが役立つこともあります。Transform コンポーネントのためのスクリプト API には、ローカルとグローバルの位置、回転、スケールに別々のプロパティがあり、また、どんな位置でもローカルとグローバル座標間で変換可能です。
不均等なスケーリングは、Transform 内の Scale の値が x、y、z に対して異なります。例えば xyz=(2, 4, 2) のように。対照的に、均等なスケーリングとは xyz=(3, 3, 3) のように同じ値になります。不均等なスケーリングは特定の場合に役立ちますが、均等なスケーリングでは発生しない奇妙なことが発生します。
Transform のスケールはモデリングアプリケーションでのメッシュのサイズと Unity のメッシュのサイズとの差異を決定します。Unity のメッシュサイズ (従って、Transform のスケール) は、特に物理シミュレーション中に大変重要です。デフォルトでは、物理エンジンはワールド空間上で 1 ユニットを 1 メートルに対応することを前提としています。オブジェクトが非常に大きい場合、それはスローモーションで落下しているように見えます。そのシミュレーションは実際に正しいです。非常に大きなオブジェクトがとても長い距離を落ちるのを見ているからです。
オブジェクトのスケールに影響を与える 3 つの要因があります。
理想的には、Transform コンポーネントのオブジェクトの Scale を調整すべきではありません。最良の方法は、現実世界のスケールでモデルを作成して、Transform のスケールを変更しない事です。2 番目に良い方法は、メッシュがインポートされるスケールを個々のメッシュの Import Settings で調整することです。インポートサイズに基づいた特定の最適化を行ったり、スケール値が調整されたオブジェクトをインスタンス化することは、パフォーマンスを低下させる可能性があります。詳細については、Rigidbody コンポーネントページのスケールの最適化に関するセクションを参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.