トランスフォームコンポーネント完全ガイド【Unityスタートガイド3-2】

目次

この記事で学べること

  • トランスフォームコンポーネントの役割と重要性
  • Position(位置)、Rotation(回転)、Scale(大きさ)の詳細
  • ローカル座標とワールド座標の違い
  • 親子関係がトランスフォームに与える影響
  • シーンビューでのトランスフォーム操作ツール

前提知識

トランスフォームコンポーネントとは?必ず付いているコンポーネント

トランスフォーム(Transform)コンポーネントは、Unityのすべてのゲームオブジェクトに自動的に付与される最も基本的なコンポーネントです。このコンポーネントがないゲームオブジェクトは存在しません。

トランスフォームの役割

トランスフォームはゲームオブジェクトの「存在の仕方」を定義します:

  • どこにいるか(Position)
  • どの方向を向いているか(Rotation)
  • どのくらいの大きさか(Scale)

なぜ重要なのか

  • すべての3D/2D表現の基礎: ゲーム内のあらゆるオブジェクトの位置・向き・サイズを決定
  • 親子関係の基盤: オブジェクト間の階層構造を構築
  • アニメーションの基礎: 移動・回転・拡大縮小アニメーションのすべてがトランスフォームに基づく

Position(位置):オブジェクトの場所を決める

Positionはゲームオブジェクトの座標位置を表します。3D空間ではX/Y/Zの3つの値を持ちます。

座標系の基本

Unityでは左手座標系を使用しています:

  • X軸: 右方向が正(赤色)
  • Y軸: 上方向が正(緑色)
  • Z軸: 前方向が正(青色)

Positionの設定方法

Inspectorでの直接入力

Position X: 5.0, Y: 2.0, Z: -3.0

シーンビューでのドラッグ操作

  • 移動ツール(Wキー)でギズモをドラッグ
  • 各軸の矢印を個別に操作可能

実践例:オブジェクトの配置

手順1: 新しいCubeを作成

Hierarchyで右クリック>3D Object>Cube

手順2: Positionを変更

InspectorのTransformコンポーネントで:

  • X: 2, Y: 1, Z: 0

Rotation(回転):オブジェクトの向きを決める

Rotationはゲームオブジェクトの回転状態を表します。Unityではオイラー角(Euler Angles)を使用します。

回転の単位

  • 度数法(Degrees):一周が360°(マイナスの値や、360を超える値も入れられます)
  • 各軸の意味:
    • X軸回転(Pitch):前後方向の傾き(おじぎ)
    • Y軸回転(Yaw):左右方向の向き(首を横に振る)
    • Z軸回転(Roll):左右への傾き(首をかしげる)

Rotationの設定例

Rotation X: 0°, Y: 45°, Z: 0°

この場合、Y軸を中心に45°回転します。

回転の注意点

ジンバルロック(Gimbal Lock)

  • オイラー角の限界:ある軸が他の軸と平行になると回転が制限される
  • Inspectorで値を入れたときにも起こります(Xを90にしてY/Zを動かすと、同じ向きに回ってしまう)
  • スクリプトで回転させるときは、クォータニオン(Quaternion)を使うと避けられます
フェアリー

Xを90°傾けた状態で、Y/Zを回転させるとなんとなく分かるかも

実践例:オブジェクトの回転

手順1: Cubeを選択

手順2: Rotationを変更

Inspectorで:

  • Y: 45

Scale(大きさ):オブジェクトのサイズを決める

Scaleはゲームオブジェクトの拡大縮小率を表します。通常は1.0が標準サイズです。

Scaleの設定

Scale X: 2.0, Y: 1.0, Z: 1.0

この場合、X方向に2倍拡大されます。

スケールの特徴

  • 1.0: 標準サイズ
  • 0.5: 半分のサイズ
  • 2.0: 2倍のサイズ
  • 負の値: 反転(裏返し)

実践例:オブジェクトの拡大縮小

手順1: Cubeを選択

手順2: Scaleを変更

Inspectorで:

  • X: 2, Y: 0.5, Z: 1

ローカル座標とワールド座標の違い

Unityには2つの座標系が存在します。これらの違いを理解することは非常に重要です。

ワールド座標(World Space)

  • 絶対座標: シーンの原点(0,0,0)を基準とした座標
  • Globalな位置: 親子関係に関係なく、シーン全体での絶対位置
  • transform.position: ワールド座標での位置

ローカル座標(Local Space)

  • 相対座標: 親オブジェクトを基準とした座標
  • Relativeな位置: 親の位置・回転・スケールからの相対値
  • transform.localPosition: ローカル座標での位置

座標系の違いを理解する

実践例:親子関係での座標

  1. 空のゲームオブジェクト(Parent)を作成
  2. HierarchyでParentを右クリック>3D Object>Cube(Parentの子として作られます)
  3. Parentを移動(X: 5, Y: 0, Z: 0)
  4. CubeのlocalPositionは(0,0,0)のまま

この場合:

  • Cubeのワールド座標: (5, 0, 0)
  • Cubeのローカル座標: (0, 0, 0)

InspectorのPositionに表示されるのはローカル座標(親から見た位置)です。そのため、子のCubeを選ぶとPositionは(0, 0, 0)のままに見えます。

親子関係とトランスフォームの継承

親子関係はトランスフォームに大きな影響を与えます。

親子関係の効果

位置の継承

  • 親が回転も拡大もしていなければ、子のワールド位置 = 親のワールド位置 + 子のローカル位置
  • 親が回転・拡大していると、子のローカル位置もその分だけ回転・拡大されてから足されます

回転の継承

  • 親が回転すると、子は親を中心にして一緒に回転します
  • 子のRotationに入っている値は「親から見た向き」なので、ワールドでの向きは親の回転と組み合わさった結果になります(単純な足し算にはなりません)

スケールの継承

  • 親を2倍にすると、子も2倍の大きさで表示されます(子のScaleの値は1のまま)

実践例:キャラクターの腕

ロボットキャラクターの腕を例に:

  • 体(親):Position (0, 1, 0)
  • 腕(子):localPosition (1, 0, 0)
  • 結果:腕のワールド位置は (1, 1, 0)

トランスフォームの操作ツール

シーンビューでは、トランスフォームを視覚的に操作できるツールが用意されています。

基本のツール

  1. Handツール(Q):視点移動専用
  2. Moveツール(W):位置の変更
  3. Rotateツール(E):回転の変更
  4. Scaleツール(R):大きさの変更
  5. Rectツール(T):四角形での編集(2DやUI向け)
  6. Transformツール(Y):移動・回転・大きさをまとめて操作

ここではMove・Rotate・Scaleの見た目だけ紹介します。詳しい使い方やスナップは4-2の記事で説明します。

各ツールの使い方

Moveツールの詳細

  • 赤/緑/青の矢印: 各軸方向への移動
  • 赤/緑/青の四角:2つの軸の方向にまとめて移動(XY/YZ/ZXの平面の上で動く)

Rotateツールの詳細

  • 赤/緑/青の円: 各軸周りの回転
  • 外側の円: 視点に垂直な面での回転

Scaleツールの詳細

  • 赤/緑/青の立方体: 各軸方向へのスケール
  • 中央の立方体: 全軸同時スケール

便利なオプション

Pivot/Centerの切り替え

  • Pivot:オブジェクトの原点(TransformのPositionの位置)
  • Center:選択したオブジェクト全体の見た目の中心

Local/Globalの切り替え

  • Local: ローカル座標系での操作
  • Global: ワールド座標系での操作

注意点やヒント

スライム

2Dの場合はスケールを反転させることはちょくちょくある

スケールの負の値について

Scaleに負の値を設定すると、オブジェクトが反転します。どれか1つの軸を-1にすると、鏡に映したように反転しますが、法線(面の向き)が逆転するため、シェーダーで問題が発生する場合があります。

Rotationが360を超えることがある

プログラムで回転を累積させる場合、オイラー角は360°を超える値になることがあります。見た目上は同じでも、数値としては異なる状態になります。

親子関係の最適化

複雑な親子関係はパフォーマンスに影響を与えます。特に動的に動くオブジェクトの階層は浅く保つことを推奨します。

よくあるエラーと対処法

エラー1: オブジェクトが意図しない位置に移動する

  • 原因: ローカル座標とワールド座標の違いを理解していない
  • 対処法: 目的に応じてtransform.position(ワールド)またはtransform.localPosition(ローカル)を使用

エラー2: 回転が意図した方向と逆になる

  • 原因: 座標系の回転方向の理解不足(右手系 vs 左手系)
  • 対処法: Unityの左手座標系を確認(Y軸が上、Z軸が前)

エラー3: Scaleが0になるとオブジェクトが見えなくなる

  • 原因: Scaleのいずれかの軸が0になった
  • 対処法: InspectorでScaleを確認、0になった軸を0.01以上に設定

まとめ

トランスフォームコンポーネントはUnityの基礎となる重要なコンポーネントです:

  • Position: X/Y/Z座標による位置指定
  • Rotation: オイラー角による回転指定
  • Scale: 各軸方向への拡大縮小
  • 座標系: ワールド座標とローカル座標の理解が重要
  • 親子関係: トランスフォームの継承がオブジェクトの挙動を決定

これらの概念をマスターすることで、3D空間でのオブジェクト操作が自由自在になります。

フェアリー

迷ったら、空のオブジェクトを親にしてCubeを子にして、親を動かしたり回したりしてみてね!数字の変わり方を見るのが一番わかりやすいよ

次のステップ

トランスフォームの基本を理解したら、次はオブジェクトの見た目を作るためのコンポーネントについて学びましょう:

また、物理演算を追加するためのコンポーネントについては:

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次