【Unity/C#】Transform.Translate(移動)の基本と書き方

Unityコード専用検索

コードの型

オブジェクトの位置(Position)を、現在の位置から指定した分だけ「ずらす」命令です。

C#

void Update()
{
    // 右方向に 0.1 ずつ移動させる
    transform.Translate(0.1f, 0, 0);
}

コードの仕組み

Translate は「並進(へいしん)」を意味します。オブジェクトの現在の座標を起点に、指定した値(x, y, z)を足し算することで位置を更新します。

  • 相対移動: Translate は「現在の位置からの距離」を移動させるため、今の場所にプラスアルファする感覚で動かせます。
  • 座標軸:
    • x: 横方向(右がプラス)
    • y: 縦方向(上がプラス)
    • z: 前後方向(奥がプラス)

活用例(スムーズな移動処理)

Time.deltaTime と組み合わせるのがプロのやり方です。これを使うことで、PCの性能に関わらず「毎秒指定した距離」進むようになります。

C#

public float speed = 5.0f; // インスペクターで設定できる移動速度

void Update()
{
    // 「方向 × 速さ × 時間」で移動量を計算
    transform.Translate(Vector3.right * speed * Time.deltaTime);
}

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

  • ローカル座標とワールド座標: デフォルトでは「自分の向いている方向(ローカル)」を基準に移動します。もし「世界の絶対的な右(ワールド)」に動かしたい場合は、第2引数を使います。 transform.Translate(Vector3.right * speed * Time.deltaTime, Space.World);
  • Transformとの関係: gameObject.transform.Translate(...) の略称です。すべてのGameObjectには必ず Transform コンポーネントがくっついているため、単に transform. と書くだけでアクセスできます。
  • 衝突判定: Translate で動かすと、壁を突き抜けてしまうことがあります。物理的にぶつかる動きを作りたい場合は、Translate ではなく Rigidbody.velocity(物理演算)を使うのが一般的です。

初心者向けまとめ

Transform.Translate は、「今の場所から、こっちに少しズレろ!」と指示する命令です。

  • SetActive:箱を出す・隠す
  • Instantiate:新しい箱を作る
  • Translate:箱を移動させる

この3つを組み合わせるだけで、キャラクターを出現させて、動かして、消すといったゲームの基本サイクルがすべて作れるようになります。

コメント

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