Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Bird Flock Bundle【Unity】

今回はアセットの紹介をしていきます。
紹介するのはBird Flock Bundleです。
鳥の動きをシミュレートしコントロールするアセットです。

f:id:Raspberly:20191128142752p:plain

 

現在開催中のSpring Saleの対象アセットとなっています。
半額で購入できるチャンスです!

 

Spring Saleはこちらのバナーからどうぞ!

f:id:Raspberly:20200423232707j:plain

 

さらにさらに、購入時に以下のクーポンコードを入力することでさらに10%OFFで購入できます!

クーポンコード: SSAFF2020

詳しいやり方はこちらをどうぞ

www.asset-sale.net

 

 

 

 

 

どんなアセット?

鳥の群れをコントロールするアセットです。
個別のアセットで売られているものをがセットになっています。

個別に買うと80ドル以上しますが、このバンドルなら半額以下で買えちゃいます。
さらにこのアセットは高い頻度で50%OFFセールの対象になっています。

 

 

用語解説

最初に、このアセットを使う上で覚えておいたほうがいい用語をまとめました。

WayPoint
鳥が飛行する際に目印にする目的地を指します。ここに向かって鳥は飛びます。

LandingSpot
鳥が着地するポイントのことを指します。

Scare
LandingSpotに着地している鳥を飛び立たせることを指します。

School
群れのことを指します。

 

 

 

開発環境

Unity2019.3.9f1

Bird Flock Bundle ver2.4.2

 

この記事ではBird Flock Crowを使用します。

 

 

 

サンプルシーンの確認

f:id:Raspberly:20200127234057p:plain
アセットインポート完了時はこんな感じです。

 

CrowやPigeonなど鳥の種類ごとにフォルダが分かれています。
それぞれのScenesにサンプルシーンがあるので確認してみましょう。
鳥によってサンプルシーンの種類が違います。

f:id:Raspberly:20200128000310p:plain

 

 

「Crow Flock - Crow Model」 シーン

キャラクターモデルの確認用シーンです。
実行すると飛行アニメーションが再生されます。

f:id:Raspberly:20200312003328g:plain

 

 

「Crow Flock - Example」 シーン

鳥たちが群れを作り、ビルのようなフィールドを飛行するシーンです。
もちろんビルなど障害物を回避します。LandingSpotが用意されているので着地もします。

f:id:Raspberly:20200422203316g:plain

Sceneビューだとこんな感じ

f:id:Raspberly:20200423200634g:plain

鳥たちは群れを作り青枠(WayPoint)を目指して飛行します。
青枠は水色枠内にランダムに生成されます。鳥が近づくと再生成されます。
黄色い範囲はLandingSpotの範囲です。着地予定の鳥は黄色い線でつながって表示されます。

 

 

「Crow Flock - Free Roam」 シーン

一定範囲内を鳥たちが自由に飛び回るシーンです。
鳥はそれぞれ群れを作ることはなく、範囲内でバラバラに行動します。WayPointは生成されません

f:id:Raspberly:20200422205329g:plain

Sceneビューだとこんな感じ

f:id:Raspberly:20200423214010g:plain

 

 

「Crow Flock - Landing Example」 シーン

鳥が指定ポイントに着地できるシステムのサンプルシーンです。

f:id:Raspberly:20200420003013g:plain

 Sceneビューだとこんな感じ

f:id:Raspberly:20200423214119g:plain

基本的な設定はExampleと同じです。
WayPointとLandingSpotが存在し、着地している様子がわかりやすい。

 

 

 

サンプルシーンの操作

ExampleとLandingにはGameビューにて以下のUIが用意されています。
文字が白いので少し見づらいですが。

f:id:Raspberly:20200422222251p:plain

Landing SpotsBird Amoutはシーン内にある着地ポイントと鳥の総数を表します。

Scare Allはシーン内でLanding Spotに着地している鳥を全て飛び立たせます。

Land In ReachはLanding Spotが近くにいる鳥を探し着地させます。近くにいない場合は無視。

Land Instantは距離に関係なく瞬時に鳥が着地した状態を作ります。

Destroyはシーン内の鳥を全て消滅させます。

鳥の数は一番下のスライダーで変更できます。

 

 

主要コンポーネント

このアセットを使いこなすうえで重要なコンポーネントを紹介します。

f:id:Raspberly:20200423002234p:plain

Flock Controller

鳥の群れをコントロールするコンポーネントです。
インスペクター用のエディタースクリプトが用意されているので、
表示されているパラメーター名とスクリプト内部の変数名が一致しないことに注意。

f:id:Raspberly:20200423003145p:plain

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です。左の場合上昇する際体を上に向けているのがわかります。

f:id:Raspberly:20200422200202p:plainf:id:Raspberly:20200422200221p:plain

 

Animation

鳥が再生するアニメーションの設定。
AnimationClip名とアニメーションの再生速度が設定できます。

 

Avoidance

鳥が回避行動をするかどうかの設定。
する場合は、対象のコライダーのレイヤー名やどの程度距離をとって回避するかなど。

 

 

 

Landing Spot Controller

Landing Spotをコントロールするコンポーネントです。

f:id:Raspberly:20200423220623p:plain

いろいろありますが、重要なところだけ抜粋。
詳しいパラメータの詳細はコメント文で詳細にかかれています。


重要な点として、
Landing Spotの親オブジェクトにはこのコンポーネントがアタッチされていないといけません

Flock

シーン内のFlock Controllerを入れておきます。

 

Feather PS

鳥の羽ばたきエフェクト。Feather PS プレハブを入れておくといいでしょう。
なくても動作に問題はありません。

 

 

 

 

 

 

実際に試してみる

既存のシーン内にBird Flockを導入する

今回は街のシーンに導入してみます。

f:id:Raspberly:20200423224022p:plain


AssetのPrefabsフォルダにあるFlock ControllerがアタッチされたPrefabをシーン内に配置します。
いろいろありますが、お好みで選んでしまいましょう。

f:id:Raspberly:20200423224231p:plain

配置したらRoaming Areaパラメータなどを調整して完成です。

f:id:Raspberly:20200423224536p:plain

簡単に空が賑やかになりました。

f:id:Raspberly:20200423225308g:plain

 

他にも、Colliderのみのオブジェクトを用意しAvoidanceの設定をすることで、
鳥が何かを囲んでいるといった表現を作ることができます。

f:id:Raspberly:20200423225857g:plain

この視点だとEVA量産機みたい

 

 

 

 

 

Landing Spotを作成する

空のGameObjectを作成し、LandingSpotコンポーネントをアタッチするだけ。

例えばCubeの上に着地させたい場合。
Cubeの上に空のGameObject"LandingSpot"を作成し、これにLandingSpotをアタッチ。

f:id:Raspberly:20200423222823p:plain

f:id:Raspberly:20200423223000p:plain


親のCubeにはLanding Spot Controllerをアタッチ
Flock ControllerとFeather PS(必須ではない)を紐づけておきます。

f:id:Raspberly:20200423223216p:plain

これで完成です。

f:id:Raspberly:20200423224917p:plain

またLandingSpotControllerはシーン内に複数あっても問題ありません。
キャラクターの頭の上など、動くオブジェクトであっても動作します。

f:id:Raspberly:20200423001935g:plain

 

 

 

 

 

 

ギズモが見づらい場合

シーンビューでのギズモが見づらい場合、FlockControllerのOnDrawGizmosから
ギズモの色を変更してみてもいいかもしれません。

f:id:Raspberly:20200423195515p:plain

f:id:Raspberly:20200423195357p:plain

 

他、SceneビューのSkyboxの表示を切ってしまうのも手です。

f:id:Raspberly:20200423195736p:plain

 

 

 

 

 

まとめ

・Bird Flock Bundleは鳥の群れをシミュレーションできるアセット

・プレハブをシーン内に置くだけで鳥の群れを出現させることができる

・鳥の動きや、迂回などはノーコーディングで調整できる

・ステージの背景などにぴったり

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

 

他間違っている箇所、わかりにくい所がありましたらコメントにお願いします。