トランスフォーム(Transforms)
Manual     Reference     Scripting   
Unityマニュアル > ユーザガイド > ゲームプレイの作成 > トランスフォーム

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはこちら
This document is unofficially translated by users.Please see the original document here.

翻訳に関する修正など、ご連絡はこちらまで。
Please send e-mail to here, when you have any question about the translation.

トランスフォーム(Transforms)

トランスフォーム(Transforms)は全てのGameObjectにおいて重要なコンポーネント(Component)です。GameObjectの位置がどこにあるか、どのように回転しているか、サイズはどうなっているかを表します。GameObjectをトランスフォーム無しで持つことは出来ません。シーンビュー(Scene View)インスペクタ(Inspector)、スクリプトを用いてGameObjectのトランスフォームを変更することが出来ます。

このページの続きはトランスフォームコンポーネントリファレンス(Transform Component Reference) ページと同一です。

トランスフォーム(Transform)

 トランスフォームコンポーネント(Transform Component)はシーン上のオブジェクトに対して実際の位置(Position), 回転(Rotation), スケール(Scale)を定義します。全てのオブジェクトがトランスフォームを持っています。


トランスフォームコンポーネントはInspectorで確認、編集が可能です

属性(Properties)



PositionトランフォームのX, Y, Z軸における位置
RotationトランスフォームのX, Y, Z軸に対する回転、度で表示
ScaleX, Y, Z軸に対するスケール。"1"がオリジナルのサイズ(インポートされた時のサイズ)。

トランスフォームのすべての属性は親のトランスフォームに相対的に表されます。トランスフォームが親を持っていない場合、属性はワールドスペースに相対的に表されます。

トランスフォームの使用(Using Transforms)

トランスフォームは常に3D空間でX, Y, Zを用いて操作されます。Unityではこれらの軸は、赤、緑、青で表されています。XYZ=RGBと覚えてください。

カラーコードによる3軸とトランスフォーム属性の関係

トランスフォームコンポーネントはシーンビューや インスペクタを用いて直接操作できます。インスペクタは上記の属性を表示し簡単な編集を提供します。また、シーン中でトランスフォームを直接操作すること もできます。移動、回転、スケールツールを使用します。これらのツールはUnityエディタの左上のコーナーにあります。


ビュー、移動、回転、スケールツール

ツールはシーン中のどのオブジェクトにも使用できます。オブジェクトをクリックすると、ツールギズモが表示されま す。現在のツールに応じて、ギズモは少しずつ異なって表示されます。オブジェクトをクリックするとトランスフォームコンポーネントがインスペクタでも表示 されます。インスペクタが属性にトランスフォームコンポーネントを表示しない場合、シーンビュー中でハイライトされているオブジェクトがありません。



3つのギズモ全て、直接シーンビューの中で編集できます。

トランスフォームを編集するには、3つのギズモの軸のどれかをクリックしてドラッグします。色が変わることが確認で きます。マウスをドラッグすると、オブジェクトが軸にそって移動したり、回転したり、スケールしたりします。マウスボタンを話すと、軸が選択されたままに なることに気がつくと思います。マウスの中ボタンをクリックしマウスをドラッグすることで選択した軸にそってトランスフォームを変更できます。3軸全てに 同時にアクセスするには3つのギズモの真ん中をクリックしてドラッグします。


クリックするとそれぞれの軸が選択されます

親子関係の設定(Parenting)

親子関係の設定は、Unityを使う上で理解すべき最も重要なコンセプトの1つです。GameObjectが他のGameObjectの親(Parent)であるとき、子(Child)のGameObjectは親の移動や回転、スケールに伴って変化します。あなたの腕が体にくっついていて、体を回すと腕もうごくのと同じ感覚です。オブジェクトは複数の子を持つことが出来ますが、親はひとつしか持てません。

GameObjectを階層ビュー(Hierarchy View)で他のGameObjectにドラッグすることで、親を作れます。これは、親子関係を2つのGameObjectの間に形成します。


実際の親子関係の階層例。左側に矢印のある全てのゲームオブジェクトは親です。

上の例では、体が腕の親になっていると説明しました。腕は手の親になっています。Unityで作成するシーンはこれらのトランスフォーム階層(Transform Hierarchies)を含みます。最上階のオブジェクトはルートオブジェクト(Root object)と呼ばれます。親を移動、回転、スケールすると、そのトランスフォームに適用された全ての変更が子にも適用されます。

インスペクタに表示される子GameObjectの値が親のトランスフォーム値に対して相対的であることは、覚えて置かなければなりません。これらはローカル座標(Local Coordinates)と呼ばれます。スクリプトを通じてローカル座標と同様に、グローバル座標(Global Coordinates)にもアクセスできます。

親子化を利用して複数の分割されたオブジェクトをまとめることも出来ます。人間のラグドールの骨構造などがそうで す。また、ひとつの親を持った小さくて効率的なオブジェクトを生成することも出来ます。例えば、夜を舞台としたホラーゲームにおいて、効果的な雰囲気をフ ラッシュライトで作成できます。オブジェクトを作るには、スポットライトのトランスフォームの親をフラッシュライトのトランスフォームとします。これえフ ラッシュライトトランスフォームへの変更は全て、スポットライトに適用され、正しいフラッシュライトの効果が得られます。

スケールの重要性(Importance of Scale)

トランスフォームのスケールはモデリングアプリケーションのメッシュサイズとUnityでのサイズにより異なります。Unityでのメッシュサイズ(つまりトランスフォームのスケール)は非常に重要です。特に物理シミュレーションを行う場合は重要です。オブジェクトのスケールを決める3つのようそがあります:

基本的にトランスフォームコンポーネントでスケール(Scale)を調整するべきではありません。実世界のサイズでモデルを作る最も良い方法は、トランスフォームのスケールを変更しないことです。2番目に良い方法は、インポート設定でインポートされたメッシュのスケールを調整することです。インポートサイズに応じて適切な最適化がなされます。スケール値が調整されたオブジェクトのインスタンス化はパフォーマンスを低下させます。スケールの最適化に関するさらに詳しい情報はリジッドボディ(Rigidbody)コンポーネントのセクションを参照してください。

ヒント(Hints)