【Unity/C#】linearVelocity(物理的な速度)の基本と書き方(旧velocity)

Unityコード専用検索

コードの型

Rigidbody2Dの移動速度を代入したり、現在の速度を確認したりします。

C#

// 1. 今の速度を取得する
Vector2 currentSpeed = rb.linearVelocity;

// 2. 右方向に速度を与える(秒速5メートル)
rb.linearVelocity = new Vector2(5.0f, 0f);

コードの仕組み

linearVelocity は、「ベクトル(方向と大きさ)」を使って速度を管理します。

  • 物理演算の権限: Rigidbody2D にこの値を渡すと、Unityの物理エンジンがその速度に合わせて自動的にオブジェクトを移動させます。
  • 単位: メートル/秒 です。例えば new Vector2(5, 0) と書くと、「右に毎秒5メートル進む速さ」をセットしたことになります。

活用例(コイン落としやアクションゲームの移動)

コインが落ちる速度や、キャラのジャンプ後の移動などに使います。

C#

void Update()
{
    // AキーかDキーで左右に動かす(物理演算で滑らかに)
    float h = Input.GetAxisRaw("Horizontal");
    rb.linearVelocity = new Vector2(h * 5.0f, rb.linearVelocity.y);
}

※ここで rb.linearVelocity.y を維持しているのは、上下の速度(重力による落下など)を殺さないためです。

その他(重要ポイント)

  • 物理移動の鉄則: 物理演算で動かしたいオブジェクト(Rigidbody2Dがついているもの)を動かすときは、transform.Translate よりもこの linearVelocity を使うのが正解です。そうしないと、壁にぶつかった時の跳ね返りや摩擦が正しく計算されません。
  • なぜ linear なの?: 「Linear(リニア)」は「直線的な」という意味です。Rigidbody2Dには他にも「回転速度(angularVelocity)」があるため、それと区別するために「直線の速度」という意味でこの名前がついています。
  • 古いUnityとの注意点: 以前のUnity(2022年以前など)では velocity という名前でした。最近のバージョン(2023年以降)から linearVelocity に名前が変更されました。もしエラーが出る場合は、お使いのUnityのバージョンに合わせて適宜読み替えてくださいね。

コメント

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