今回はアセットの紹介をしていきます。
紹介するのはBird Flock Bundleです。
鳥の動きをシミュレートしコントロールするアセットです。
現在開催中のSpring Saleの対象アセットとなっています。
半額で購入できるチャンスです!
Spring Saleはこちらのバナーからどうぞ!
さらにさらに、購入時に以下のクーポンコードを入力することでさらに10%OFFで購入できます!
クーポンコード: SSAFF2020
詳しいやり方はこちらをどうぞ
どんなアセット?
鳥の群れをコントロールするアセットです。
個別のアセットで売られているものをがセットになっています。
個別に買うと80ドル以上しますが、このバンドルなら半額以下で買えちゃいます。
さらにこのアセットは高い頻度で50%OFFセールの対象になっています。
用語解説
最初に、このアセットを使う上で覚えておいたほうがいい用語をまとめました。
・WayPoint
鳥が飛行する際に目印にする目的地を指します。ここに向かって鳥は飛びます。
・LandingSpot
鳥が着地するポイントのことを指します。
・Scare
LandingSpotに着地している鳥を飛び立たせることを指します。
・School
群れのことを指します。
開発環境
Unity2019.3.9f1
Bird Flock Bundle ver2.4.2
この記事ではBird Flock Crowを使用します。
サンプルシーンの確認
アセットインポート完了時はこんな感じです。
CrowやPigeonなど鳥の種類ごとにフォルダが分かれています。
それぞれのScenesにサンプルシーンがあるので確認してみましょう。
鳥によってサンプルシーンの種類が違います。
「Crow Flock - Crow Model」 シーン
キャラクターモデルの確認用シーンです。
実行すると飛行アニメーションが再生されます。
「Crow Flock - Example」 シーン
鳥たちが群れを作り、ビルのようなフィールドを飛行するシーンです。
もちろんビルなど障害物を回避します。LandingSpotが用意されているので着地もします。
Sceneビューだとこんな感じ
鳥たちは群れを作り青枠(WayPoint)を目指して飛行します。
青枠は水色枠内にランダムに生成されます。鳥が近づくと再生成されます。
黄色い範囲はLandingSpotの範囲です。着地予定の鳥は黄色い線でつながって表示されます。
「Crow Flock - Free Roam」 シーン
一定範囲内を鳥たちが自由に飛び回るシーンです。
鳥はそれぞれ群れを作ることはなく、範囲内でバラバラに行動します。WayPointは生成されません。
Sceneビューだとこんな感じ
「Crow Flock - Landing Example」 シーン
鳥が指定ポイントに着地できるシステムのサンプルシーンです。
Sceneビューだとこんな感じ
基本的な設定はExampleと同じです。
WayPointとLandingSpotが存在し、着地している様子がわかりやすい。
サンプルシーンの操作
ExampleとLandingにはGameビューにて以下のUIが用意されています。
文字が白いので少し見づらいですが。
Landing SpotsとBird Amoutはシーン内にある着地ポイントと鳥の総数を表します。
Scare Allはシーン内でLanding Spotに着地している鳥を全て飛び立たせます。
Land In ReachはLanding Spotが近くにいる鳥を探し着地させます。近くにいない場合は無視。
Land Instantは距離に関係なく瞬時に鳥が着地した状態を作ります。
Destroyはシーン内の鳥を全て消滅させます。
鳥の数は一番下のスライダーで変更できます。
主要コンポーネント
このアセットを使いこなすうえで重要なコンポーネントを紹介します。
Flock Controller
鳥の群れをコントロールするコンポーネントです。
インスペクター用のエディタースクリプトが用意されているので、
表示されているパラメーター名とスクリプト内部の変数名が一致しないことに注意。
Frame Skipping
フレーム更新の頻度をどの程度スキップするか。(60fpsでは3~4、30 fpsでは2~3)
この値が小さいほど頻繁に更新されるようになります。逆に大きいとカクカクになります。
Bird Prefab
鳥のプレハブを設定します。
Roaming Area
WayPointを作成する範囲を設定します。
それぞれのパラメータはx,y,z軸になっていて、この範囲内にWayPointを作成します。
このパラメータが全て0の場合WayPointは作成されません。
その場合FreeRoamと同じ挙動になり、下記Size of the flockで設定した範囲内で鳥たちが飛行します。
Size of the flock
Bird Amoutは鳥の総数。
Flock Width, Depth, heightは鳥を生成する範囲です。Roaming Areaが0の場合、この範囲内で鳥は飛行します。
Start Position Offsetは生成範囲のオフセット。
Slowly Spawn Birdsにチャックが入っていると鳥は一斉に生成されず、
1体1体遅れて生成されます。
Behaviour And Appearance
鳥プレハブのパラメーターです。
プレハブにアタッチされているFlock Childコンポーネントのパラメーターを直接変えても、
こちらのパラメーターで上書きされるので注意しましょう。
Birds Min Speed & Birds Max Speedは飛行時の最低速度と最高速度。
Birds Dive Depthはどれだけ急降下するか
Birds Dive Chance & Birds Soar Chanceは急降下と急上昇の頻度(0~1)。0はまったく行わず、1は常に行う
Soar Timeは急上昇を行う時間
Min Damping Turns & Max Daming Turnsは旋回速度の最低値と最大値
Birds Min Scale & Birds Max Scaleは鳥の大きさ
Disable Pitch Rotation
鳥が上昇下降をする時、体の角度を変えるかどうか。
左がFalseで、右がTrueです。左の場合上昇する際体を上に向けているのがわかります。
Animation
鳥が再生するアニメーションの設定。
AnimationClip名とアニメーションの再生速度が設定できます。
Avoidance
鳥が回避行動をするかどうかの設定。
する場合は、対象のコライダーのレイヤー名やどの程度距離をとって回避するかなど。
Landing Spot Controller
Landing Spotをコントロールするコンポーネントです。
いろいろありますが、重要なところだけ抜粋。
詳しいパラメータの詳細はコメント文で詳細にかかれています。
重要な点として、
Landing Spotの親オブジェクトにはこのコンポーネントがアタッチされていないといけません。
Flock
シーン内のFlock Controllerを入れておきます。
Feather PS
鳥の羽ばたきエフェクト。Feather PS プレハブを入れておくといいでしょう。
なくても動作に問題はありません。
実際に試してみる
既存のシーン内にBird Flockを導入する
今回は街のシーンに導入してみます。
AssetのPrefabsフォルダにあるFlock ControllerがアタッチされたPrefabをシーン内に配置します。
いろいろありますが、お好みで選んでしまいましょう。
配置したらRoaming Areaパラメータなどを調整して完成です。
簡単に空が賑やかになりました。
他にも、Colliderのみのオブジェクトを用意しAvoidanceの設定をすることで、
鳥が何かを囲んでいるといった表現を作ることができます。
この視点だとEVA量産機みたい
Landing Spotを作成する
空のGameObjectを作成し、LandingSpotコンポーネントをアタッチするだけ。
例えばCubeの上に着地させたい場合。
Cubeの上に空のGameObject"LandingSpot"を作成し、これにLandingSpotをアタッチ。
親のCubeにはLanding Spot Controllerをアタッチ。
Flock ControllerとFeather PS(必須ではない)を紐づけておきます。
これで完成です。
またLandingSpotControllerはシーン内に複数あっても問題ありません。
キャラクターの頭の上など、動くオブジェクトであっても動作します。
ギズモが見づらい場合
シーンビューでのギズモが見づらい場合、FlockControllerのOnDrawGizmosから
ギズモの色を変更してみてもいいかもしれません。
他、SceneビューのSkyboxの表示を切ってしまうのも手です。
まとめ
・Bird Flock Bundleは鳥の群れをシミュレーションできるアセット
・プレハブをシーン内に置くだけで鳥の群れを出現させることができる
・鳥の動きや、迂回などはノーコーディングで調整できる
・ステージの背景などにぴったり
他のアセットの紹介記事はこちら↓
他間違っている箇所、わかりにくい所がありましたらコメントにお願いします。