技術書典 商品ページ : https://techbookfest.org/product/eQPriK07yiyuDYm5TWXKGk
Techbook-PracticalBoids/
├── PracticalBoids-unity/ // サンプルUnityプロジェクト
├── unitypackage/ // お試し用unity package
├── README.md
└── LICENSE
本のサンプルプログラムを章ごとにまとめたUnityプロジェクトです。URPで作成しています。
- Unity 6000.0.36f1
- URP 17.0.3
- Burst 1.8.18
- Collections 2.5.1
- Mathematics 1.3.2
章ごとにフォルダを分けて、各サンプルシーンやプログラムを保存しています。
PracticalBoids-unity/
├── Assets/
| ├── Common/ // サンプル全体で使用するプログラム
| ├── FBX/ // シーン上に含まれる.fbxデータ
| ├── Materials/ // シーン上で使用するマテリアル
| ├── Part1/ // 1章 Graphics.RenderMeshInstancedとJobSystemの基礎
| ├── Part2/ // 2章 群れを作るBoidsシミュレーション
| ├── Part3/ // 3章 Boidsシミュレーションの最適化
| ├── Part4/ // 4章 Colliderの衝突回避と退避行動の実装
| ├── Part5/ // 5章 Boidsシミュレーションを使ったシューティングゲーム開発
| └── Settings/ // URPの設定
├── Packages/
├── ProjectSettings/
└── .gitignore
❗❗注意 ❗❗ サンプルを実行するときは、UnityのSceneビューとGameビューを同時に開かないよう気をつけてください。
レンダリング負荷が高くなり、動作が重くなる原因になります。
Graphics.RenderMeshInstancedとJobSystemを使って、大量のCubeが落ちるサンプル。
↓ 100,000個で動作確認。
Part1.mp4
Boidsシミュレーションを作成したサンプル。
↓ 4,000体で動作確認。
Part2.mp4
Boidsシミュレーションを最適化して個体数を増やし、シミュレーション空間を広げたサンプル。
↓ 30,000体で動作確認。
Part3.mp4
Boidsシミュレーションに衝突回避と退避行動を追加したサンプル。シーン上のオブジェクトを回避したり、プレイヤーから退避する。
↓ 30,000体で動作確認。
Part4.mp4
Boidsシミュレーションに生存管理や衝突判定を実装し、シューティングゲームに拡張したサンプル。
↓ 30,000体で動作確認。
Part5.mp4
「4章 Colliderの衝突回避と退避行動の実装」にて、ApplySteerForceJob の速度制限を修正しました。
if (escapeForce is not { x: 0, y: 0, z: 0 })
{
escapeForce *= _escapeObstaclesWeight;
boidsData.Velocity = MathematicsUtility.Limit(boidsData.Velocity + escapeForce * _deltaTime, _escapeMaxSpeed);
}
else
{
// 原稿から修正:動的オブジェクトから逃げない場合、通常の最高速度に制限する
// 逃げない場合にのみ制限しないと、次フレームで逃げる速度が消えるため
boidsData.Velocity = MathematicsUtility.Limit(boidsData.Velocity + force * _deltaTime, _maxSpeed);
}読者の作成済みUnityプロジェクトでも簡単に導入できるよう、Boidsシミュレーションのunity packageを公開しています。 「4章 Colliderの衝突回避と退避行動の実装」の実装とサンプルが含まれています。
unity packageは汎用性を高めるため、Unity 2022.3.0f1で作成しています。
- Unity 2022.3.0f1
- Burst 1.8.18
- Collections 2.5.1
- Mathematics 1.3.2
- UnityのPackage Managerを開く
+ボタンを押して、Git URLから追加を選択- 以下のURLを入力
https://github.com/Shitakami/Techbook-PracticalBoids.git?path=unitypackage/com.shitakami.practicalboids#v1.0.0
- プロジェクトの
Packages/manifest.jsonファイルを開く dependencies内に以下を追加
"com.shitakami.practicalboids": "https://github.com/Shitakami/Techbook-PracticalBoids.git?path=unitypackage/com.shitakami.practicalboids#v1.0.0"
- Unity画面をリフレッシュ後、自動的にパッケージがインストールされる
サンプルはURPで作成しているため、Built-inなどで使用する場合は自前でマテリアルを変更してください。
- unity packageインポート後に、UnityのPackage Managerを開く
Packages - ShitakamiのPractical Boids Sampleを選択- Sampleタブを選択し、
Boids Sampleをダウンロード Assets/Samples/Practical Boids Smapleが追加されたことを確認
