コードの型
座標を直接書き込むか、現在の座標を取得します。
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ではエラーになります。positionはVector3というセットになっているため、一度バラして入れ直す必要があります。C#// 正しい書き方(一度新しいVector3を作る) Vector3 pos = transform.position; pos.x = 10; transform.position = pos; - Translate との使い分け:
Translate: 毎フレームの「スムーズな移動(徒歩や車など)」向き。position: 「瞬間移動」や「強制的な位置調整(リセットなど)」向き。
- 物理演算との関係: 物理演算で動いているオブジェクト(Rigidbodyがあるもの)に対して
transform.positionを強引に書き換えると、物理挙動が壊れる(突き抜けや跳ね返りが発生する)ことがあります。物理キャラはRigidbody.MovePositionを使いましょう。
初心者向けまとめ
transform.position は、「地図上のピンの場所(緯度・経度)」を直接書き換えるようなものです。
Translate:歩いて移動するイメージ。position:地図上のピンを別の場所に直接貼り直すイメージ。

コメント