UnityでAddForceを使って物理的な力を加える際に、速度上限を設定して、物体が一定の速度を超えないように制御したい場合があります。この記事では、UnityのC#プログラミングにおいて、AddForceを使いながら速度上限を設定する方法を解説します。
1. AddForceの基本的な使い方
まず、AddForceを使って物体に力を加える基本的なコードを見てみましょう。以下のコードは、右キーを押すと物体に右方向の力を加えるものです。
if (Input.GetKey(KeyCode.RightArrow)) {
rb.AddForce(transform.right);
}
このコードは、物体のRigidbodyに右方向の力を加えていますが、このままだと無制限に加速してしまいます。ここで、速度上限を設定する方法を考えます。
2. 速度上限を設定する方法
速度上限を設定するためには、Rigidbodyの速度を取得して、一定の速度を超えないように制限することができます。例えば、以下のコードでは、速度が最大で10を超えないように制限しています。
float maxSpeed = 10f;
Vector3 velocity = rb.velocity;
if (velocity.magnitude > maxSpeed) {
rb.velocity = velocity.normalized * maxSpeed;
}
if (Input.GetKey(KeyCode.RightArrow)) {
rb.AddForce(transform.right);
}
このコードでは、まず現在の速度ベクトルを取得し、その大きさ(magnitude)が最大速度を超えていないか確認します。もし超えていれば、速度を最大速度にリセットします。こうすることで、物体は指定した最大速度を超えないようになります。
3. まとめ
UnityでAddForceを使いながら速度上限を設定するには、Rigidbodyの速度を監視し、必要に応じて速度を制限する方法が有効です。この方法で、物体が望ましい速度で動き続けるように制御できます。


コメント