【Unity/C#】transform.position(座標の直接指定)の基本と書き方

Unityコード専用検索

コードの型

座標を直接書き込むか、現在の座標を取得します。

C#

// 1. 特定の場所にワープさせる(絶対位置の指定)
transform.position = new Vector3(0, 5, 0);

// 2. 現在の座標を取得する
Vector3 currentPos = transform.position;

// 3. 今の場所から、少しだけずらして更新する
transform.position += new Vector3(1, 0, 0);

コードの仕組み

transform.position は、ゲーム空間(ワールド座標)における「X, Y, Z」の数値を保持している変数です。

  • Vector3型: transform.position は常に Vector3 型という「3つの数字(X, Y, Z)のセット」を扱います。
  • 直接書き換え: transform.position = ... と書くことで、そのオブジェクトを瞬時にその座標へ移動(テレポート)させることができます。

活用例

例えば、「画面外に出たらスタート地点に戻す(リセット)」という処理に最適です。

C#

public Vector3 startPosition = new Vector3(0, 0, 0);

void Update()
{
    // Y座標が -10 未満になったら、スタート地点にワープ!
    if (transform.position.y < -10)
    {
        transform.position = startPosition;
    }
}

その他(実用的なテクニック)

  • 部分的な書き換えができない: transform.position.x = 10; と書くのは、UnityではエラーになりますpositionVector3 というセットになっているため、一度バラして入れ直す必要があります。C#// 正しい書き方(一度新しいVector3を作る) Vector3 pos = transform.position; pos.x = 10; transform.position = pos;
  • Translate との使い分け:
    • Translate: 毎フレームの「スムーズな移動(徒歩や車など)」向き。
    • position: 「瞬間移動」や「強制的な位置調整(リセットなど)」向き。
  • 物理演算との関係: 物理演算で動いているオブジェクト(Rigidbodyがあるもの)に対して transform.position を強引に書き換えると、物理挙動が壊れる(突き抜けや跳ね返りが発生する)ことがあります。物理キャラは Rigidbody.MovePosition を使いましょう。

初心者向けまとめ

transform.position は、「地図上のピンの場所(緯度・経度)」を直接書き換えるようなものです。

  • Translate:歩いて移動するイメージ。
  • position:地図上のピンを別の場所に直接貼り直すイメージ。

コメント

タイトルとURLをコピーしました