Unityでヘリコプターを作ろうとすると、単純な「前進移動」だけではリアルさが出ず、浮遊感や慣性、機体の傾きなどの再現が難しいと感じる人は多いです。
特にリアル寄りのヘリ挙動では、Rigidbody物理、ローター推力、トルク制御、機体傾斜などを組み合わせる必要があります。
この記事では、UnityとC#でリアルなヘリコプター動作を作る基本構造を、初心者向けにわかりやすく整理して解説します。
ヘリコプター挙動の基本構造
リアルなヘリ挙動は、主に以下の要素で構成されています。
| 要素 | 役割 |
|---|---|
| 揚力 | 機体を浮かせる |
| ピッチ | 前後移動 |
| ロール | 左右傾き |
| ヨー | 旋回 |
| 慣性 | 重さ感・滑り |
| ドラッグ | 空気抵抗 |
ヘリは「直接移動」ではなく、「力を加えて動かす」ことでリアルさが生まれます。
まずはRigidbodyベースで作る
リアル系ヘリでは、Transform移動ではなくRigidbodyを使用するのが基本です。
最低限必要な設定例です。
- Use Gravity:ON
- Mass:500〜3000程度
- Drag:0.2〜1.0
- Angular Drag:1〜3
重力と慣性を使うことで、「浮いている感じ」が出しやすくなります。
上昇・下降の作り方
ヘリはローター推力で浮きます。
Unityでは AddForce を使うのが基本です。
例えば以下のようなイメージになります。
rb.AddForce(transform.up * liftPower);
transform.up方向へ力を加えることで、機体の向きに応じた浮上が可能になります。
ここで重要なのは、「真上に移動させる」のではなく、「上向きの力を加える」ことです。
前進する仕組み
ヘリは機体を前傾させ、その方向へ推力を出して前進します。
つまり、
- 機体を前に傾ける
- ローター推力を維持する
- 結果として前方向へ進む
という構造です。
これが飛行機とは少し違う特徴です。
ピッチ制御の例
rb.AddTorque(transform.right * pitchInput * pitchPower);
これで前後傾斜を作れます。
左右移動(ロール)
左右移動も、基本は機体を傾けることで表現します。
ヘリは「横にスライド」しているように見えて、実際は少し傾いています。
rb.AddTorque(transform.forward * -rollInput * rollPower);
この「傾いて進む感覚」がリアル感に直結します。
旋回(ヨー)の作り方
ヘリの向き変更はヨー回転で行います。
rb.AddTorque(transform.up * yawInput * yawPower);
ただしヨーを強くしすぎると、ゲームっぽい挙動になりやすいです。
実際のヘリは慣性が強く、回転も少し重たいです。
リアル感を出す重要ポイント
慣性を残す
入力を離した瞬間に止まると、ラジコン感が強くなります。
DragやAddForceの調整で「流れる感じ」を作るとリアルになります。
完全安定させすぎない
実際のヘリは少し不安定です。
わずかな揺れや遅延がある方がリアル感が出ます。
自動水平補正を弱めにする
初心者向けゲームでは水平補正を入れますが、強すぎるとドローン風になります。
リアル系ヘリで重要な「ローター感」
見た目のリアルさもかなり重要です。
- ローター回転速度
- 回転ブラー
- 機体振動
- ローター音
- 地面ダウンウォッシュ
これらを追加すると、一気に本物っぽく見えます。
特にローター音は没入感に直結します。
FixedUpdateを使う理由
物理演算系のヘリ制御は Update() ではなく FixedUpdate() を使います。
void FixedUpdate(){ rb.AddForce(...);}
これはUnityの物理演算タイミングと同期させるためです。
Update()で力を加えると、不安定になりやすいです。
初心者がやりがちな失敗
| 失敗 | 原因 |
|---|---|
| 空中で暴れる | Torque過多 |
| 軽すぎる | Mass不足 |
| ピタッと止まる | 慣性不足 |
| 操作不能 | Drag不足 |
| 不自然に速い | Force値過大 |
リアル系ほど、「数値を小さめに調整する」のがコツです。
本格的に作るなら必要になる要素
さらにリアル化する場合、以下も実装されます。
- オートホバー
- 地面効果(Ground Effect)
- ロータートルク反動
- オートローテーション
- 風の影響
- 空気密度
ただし最初から全部やるとかなり難しいため、まずは「浮く・傾く・進む」の3つを作るのがおすすめです。
おすすめの学習順
- Rigidbody操作
- AddForce
- AddTorque
- ドローン挙動
- ヘリ挙動
- 空力調整
実はヘリより、まずドローン挙動を作る方が理解しやすいです。
まとめ
Unityでリアルなヘリコプターを作るには、Transform移動ではなく、Rigidbody物理ベースで「力」を使って制御することが重要です。
特に、
- 揚力
- 機体傾斜
- 慣性
- トルク
を組み合わせることで、リアルな飛行感覚が生まれます。
最初は難しく感じますが、「浮く → 傾く → 前進する」という順番で少しずつ実装すると理解しやすくなります。
ヘリ挙動はUnity物理の理解がかなり深まる題材なので、じっくり試行錯誤しながら作るのがおすすめです。


コメント