Raspberlyのブログ

Raspberlyのブログ

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

【アセット紹介】Umbra Boundary Builder で移動範囲の境界を作る【Unity】

今回はアセットの紹介をしていきます。
紹介するのはUmbra Boundary Builder
プレイヤーとナビメッシュエージェントの境界を作成するアセットです。

f:id:Raspberly:20210518101019p:plain

 

f:id:Raspberly:20210518030623p:plain



 

お得なセール情報

現在アセットストアでは、レベルデザインに関係したアセットのバンドルが発売中!
今回紹介する「Umbra Boundary Builder」もバンドルに含まれています。

f:id:Raspberly:20210518024635p:plain

金額に応じてアセットが異なりますが、オススメは全てのアセットが含まれた$39.99コースです。
通常の50%OFFセールで購入するよりも遥かに安く購入できるので、
気になるアセットがある場合は買っちゃいましょう!

f:id:Raspberly:20210518025913p:plain

f:id:Raspberly:20210518025953p:plain

f:id:Raspberly:20210518030035p:plain

f:id:Raspberly:20210518030055p:plain

blogs.unity3d.com

 

 

 

どんなアセット?

キャラクターをCharacter ControllerやNavmeshで動かすとき、移動範囲を設定するのはやや面倒ですよね。
ステージ自体が壁や障害物で囲まれているのなら問題ありませんが、
見えない壁を設置したい場合は多くのCubeを駆使しステージを囲む必要があります。
そういう時に役に立つのがこのアセット「Umbra Boundary Builder」。
ノードを配置しそれらをつないだメッシュを作成するアセットです。 

f:id:Raspberly:20210518022445g:plain

特筆すべき機能
- Unity 5+で動作
- 数回のクリックでバウンダリになるノードをシーンに追加できます。
- ナビメッシュとそれを使用するAIが、プレイヤーと同じ境界を尊重するようにします。
- バウンダリをベイクしなくても、リアルタイムでバウンダリが作成されるのを確認できます。
- シンプル、軽量、簡単に使用可能

 

 

こちらの動画のようなキャラクターコントローラーを使う場合に便利です。

www.youtube.com

 

 

実行環境

Unity2020.1.17f1
Umbra Boundary Builder Ver2.3.2

 

 

インポートの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20210518015620p:plain

Generalというフォルダには、Umbra Boundary Builderに限らず同パブリッシャーのアセットで使われる共通処理や機能が含まれています。削除しないようにしましょう。
ちなみにこれらの機能はusingステートメントを追加するこで誰でも使えるようです。

 

肝心のアセットの使い方はUmbraEvolution/UmbraBoundaryBuilder/README_UmbraBoundaryBuilderに書いてあります。
デモシーンはないようです。

 

 

 

主要コンポーネント

このアセットを使いこなすうえで重要なコンポーネントを紹介します。
機械翻訳を使用しているのでおかしいところがあるかも

Boundary Builder

f:id:Raspberly:20210518001602p:plain

Use Physical Gizmos

Unityエディタにギズモに似たオブジェクトを作成します。
無効にするまでビルド後も継続されます。基本的にオンにしない方がよさそう。

フィジカルギズモは、Unityのビルトインギズモと比較して、計算量が多く、実験的な機能です。デフォルトのギズモが動作しない場合や、プレイモードや開発ビルドでギズモを使用する必要がある場合にのみ使用してください。

Gizmos Always On

選択されていなくてもシーンビュー上で常表示されるようになります。

Add New Boundary

Boundary Builderの子オブジェクトにBoundaryを作成します。

 

Boundary

f:id:Raspberly:20210518001910p:plain

Placeable Layers

シーンビューにノードを配置する時にレイキャストが反応するレイヤー。

Boundary Gizmo Colour & Node Gizmo Colour

境界線とノードのギズモの色

 

f:id:Raspberly:20210518005716p:plain

Node Gizmo Radius

ノードのギズモの大きさ

Closed Loop

最初と最後のノードの間に境界を作成するかどうか。完全に閉じた境界を作るには有効にします。

f:id:Raspberly:20210518023732g:plain

Use Box Colliders

コライダーを有効にするかどうか

Physics Layer

境界の物理レイヤー

Boundary Thickness & Height

境界の厚みと高さ

f:id:Raspberly:20210518021555g:plain

Vertical Offset

垂直方向のオフセット

Boundary Mesh Material

作成されるメッシュのマテリアル。何も設定しないとこうなる。
何も表示しなくない場合は透明なシェーダーを割り当てるなりMesh Rendererを切るなりしましょう。

 

 

 

 

実際に試してみる

シーンにBoundary Builderを配置する

Unityエディターのツールバーから、Tools/UmbraEvolution/UmbraBoundaryBuilder/Add Boundary Builder
BoundaryBuilderコンポーネントがアタッチされたゲームオブジェクトを作成します。

f:id:Raspberly:20210518001521p:plain

Boundaryの作成

Boundary BuilderのAdd New BoundaryでBundaryを作成します。

f:id:Raspberly:20210518001748p:plain

見やすいようにギズモや境界の大きさを変えておきます。

f:id:Raspberly:20210518014342p:plain

ノードの配置

BoundaryのStart Placing Nodesボタンを押します。

f:id:Raspberly:20210518020331p:plain

この状態で、シーンビュー上を左クリックしていくとその場所にノードが作成されます。
キャラクターの移動範囲を囲むように配置していきます。

f:id:Raspberly:20210518021640g:plain

ノードを配置し終わったら、BoundaryのStop Placing Nodesを押します(忘れないように)

f:id:Raspberly:20210518020718p:plain

メッシュの作成

配置したノードをつなげてメッシュを作成します。
BoundaryのGenerate Meshボタンを押します。

f:id:Raspberly:20210518020744p:plain

 

無事作成されました。
マテリアルを何も設定していないので煌びやかな色になっていますが、
BoundaryのMesh Rendererを無効化することで解決できます。
(NavMeshを使用している場合はBakeしてから無効化しましょう)

f:id:Raspberly:20210518021226p:plain

f:id:Raspberly:20210518020832p:plain

今回は見えない壁を作りましたが、目に見える壁にしたい場合はBoundaryからマテリアルを割り当てると良い

 

 

これで完成です。
プレイヤーの移動範囲が制限されていますね。

f:id:Raspberly:20210518022445g:plain

 

 

Boundaryは複数作成できるので迷路のような細かい境界も作成できます。
この場合、BoundaryのClosed Loopをオフにしておくと良いですね。

f:id:Raspberly:20210518023017p:plain

 

 

以上です。

 

 

 

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

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

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