したかみ ぶろぐ

Unity成分多め

【宣伝】Boidsシミュレーションを実用して表紙の絵を作る!

始めに

技術書典18にて、個人で執筆した技術書『Unity JobSystemで大群を動かす!実用Boidsシミュレーション』を出版します。

techbookfest.org

shitakami.hateblo.jp

今回は『実用Boidsシミュレーション』に焦点を当てて、どのようにBoidsを使って表紙の魚群を作成したのか解説します。


Boidsシミュレーション準備

まず、技術書の5章「Boidsシミュレーションを使ったシューティングゲーム開発」のサンプルを持ってきます。 このBoidsシミュレーションが持つ機能は次の通りです。

  • Colliderとの衝突回避
  • 動くオブジェクトからの退避
  • 生存状態の管理
  • 衝突判定

上記のうち「動くオブジェクトからの退避」と「衝突判定」は不要ですが、削除するのも面倒くさいのでそのままにしています。

Boids個体の生成を調整

技術書のサンプルでは、ゲーム開始時に全個体をランダムな座標に生成します。

これを調整して、スペースキーを押したときに指定した空間と方向で生成させます。 これにより、望んだ場所と方向に魚群を作成できます。


Boidsを円状に動かす

群れを円状に動かす方法として、Colliderで通り道を作りました。

通り道となるPrefabを作成

通り道の作成は単純で、4つのQuadを囲ってMeshRendererを非アクティブにして完成です。

これをBoidsの生成位置に置けば、その通り道に沿って動いてくれます。


Splineで形を作る

次にSplineを使って通り道の形を作ります。いくつか流れがあるので、箇条書きで説明します。

  1. PackageManagerからSplineをインポート
  2. HierarchyからSpline > Circleで円を作成
  3. コンポーネント Spline Instantiate で、形状に沿って通り道Prefabを生成

(ここは作業通話してた友人からアドバイスを貰いました)

これで通り道が完成し、円状に動く群れが完成しました。


表紙作り

あとはアバターを配置し、ポージングさせて群れと合わせます。


最後に背景をいい感じに調整して完成です!

最後に

このように技術書で解説したBoidsシミュレーションを実用して、表紙を作りました。タイトルに含まれる「実用」を上手く表現できたのかなと思っています。

技術書ではシューティングゲームを作っていますが、視覚的な表現にも応用できます。興味がありましたら本書を手に取っていただけると嬉しいです。


表紙作成にしようしたもの

表紙を作るうえで、いくつかアセットを使用したので掲載します。(魚のモデルに関しては友人に作ってもらったものです)

モデル

デザインはChat GPTにお願いして、VRoidで作成しました。

使用したアセットは以下の通りです。

tonakaisan.booth.pm

mimihouse.booth.pm

また、VRoidモデルにliltoonをアタッチしています。

lilxyzw.github.io

背景

背景はUnity AssetStoreから購入したものを使用しました。

assetstore.unity.com