Onoty3D

Unityに関するメモとか

Character Particle!

この記事はUnity アセット真夏のアドベントカレンダー 2017 11日目の記事です。

前日の記事はなまずさんの「亭々たる あの雲を求めて 〜Fog Volume 3〜」でした。
Fog Volume 3は自分のほしいものリストにもしっかり入れていて、いつか使ってみたいと思っているアセットです…。特にこの夏のまっさかりの時期には、もくもくとした雲がぴったりじゃないですか!

qiita.com

 

さて、本題に入ります。
先月末、7/28に、自身の初アセット「Character Particle」が公開となりました!

\どやぁ/

どんなアセットかというと、任意の文字列をParticleとして一文字ずつ放出できるアセットです。

www.youtube.com

公開当日はUnityAssetStoreJapanさんが突発イベントで、宣伝もしてくださいました!
ありがとうございます!

この時のみなさまの作品は #ほとばしる言霊ハッシュタグで見ることが出来ます。
またtogetterにもUnityAssetStoreJapanさんがまとめてくださっています!

togetter.com


作品は未だ増えたりしてます。ありがたや…!

さて、使い方ですが、詳しい使い方はアセットに付属のマニュアル内に書いております。
なのでここでは、使い方の要点を説明していきたいと思います。

 

使い方の要点

■フォントについて

uGUIのTextのように、フォントを指定すればすぐに使える…なら便利だったかもしれませんが、このアセットでは任意のフォントからビットマップフォント(テクスチャ)を事前に生成する必要があります。
その為フォントファイルを同梱する必要がなくなるので、フォントの再配布がライセンスに不可なものでもアプリで利用可能になったりします(※ビットマップフォントの作成もNGな場合があるので、各フォントのライセンス・規約には十分ご注意ください。)
ちなみにおすすめはGoogleの提供しているGoogle Noto Fontsです。ライセンスはSIL Open Font Licenseで、ビットマップフォントの公開はもとより、再配布もOKとなっています。日本を含む様々な国の文字や、ルーン文字なんかもあります。
本アセットに同梱されているサンプルもこのフォントを利用させてもらっています。

■テクスチャの作成

ビットマップフォントの生成は、その名のとおりBitmap Font Generatorというソフトウェアを基本的に利用します。Unityに限らず、ゲームで利用するフォントを作成するシーンで、割と世界中で活用されているソフトウェアのようです。
このソフトウェアで出力される設定ファイルの仕様は幾つかの他のソフトウェアでもサポートされていてるので、そちらで作成したファイルも利用可能です。

Bitmap Font Generator自体はWindows用のソフトウェアなので、他の環境のかたは、他のソフトウェアをお試しください。

Bitmap Font Generatorのサイトより引用。

ソフトウェアの具体的な使い方は今回割愛しますが、公式ドキュメント(英語)強火で進めさんの記事などが参考になります。

■シェーダー

シェーダーは現在3種類用意しています。

Additive:背景と加算合成

f:id:onoty3d:20170811012107g:plain


Alpha:透過部分の切り抜き合成

f:id:onoty3d:20170811012201g:plain


Alpha Dissolve:Alpha+分解表現

f:id:onoty3d:20170811012338g:plain

作りたい雰囲気に合わせて好きなものをご利用ください。
またDissolve処理用のテクスチャは好きに差し替え可能です。

f:id:onoty3d:20170811013808p:plain
例えばこのような画像に差し替えて、Dissolveのパラメータを動的に変化させた場合は、こんな感じの表現が出来ます。

f:id:onoty3d:20170811013856g:plain

■パーティクルシステムのパラメータ

一番の難所はパーティクルシステムのパラメータ調整かもしれません。
パーティクルシステムには20を超えるモジュールが付属しているためすべてをすぐに把握するのは難しいです。

f:id:onoty3d:20170811000208p:plain
公式ドキュメント(※)や、解説サイトでじっくり把握していってください。

Unity - スクリプトリファレンス: ParticleSystem 日本語版、若干古い

Unity - Scripting API: ParticleSystem 英語、最新

 

サンプル1:
StartSpeedを0、Simulation SpaceをWorldにし、Particle System本体を動かしてみるとこんな感じ(Noiseモジュールも加えて、放出後のパーティクルがウネウネと動くようにしている)。

f:id:onoty3d:20170811021031g:plain

サンプル2:
External Forcesモジュールと、外部WindZoneで、風に舞う文字

f:id:onoty3d:20170811020118g:plain

 また、実際にアセットとして公開されているパーティクルシステムをダウンロードして、そのパラメータを調整しながら、変化の具合を確かめるのも勉強になります。
おすすめのフリーなパーティクルシステムをリストにしてみました。

■今後の展開

・シェーダーを幾つか追加

・サンプルを増加

・新規スクリプトの追加

等を考えています。

現在、Character Particle Multiline Emitter(仮)
というのを絶賛開発中です。

文字単位だった放出を文字列単位にし、複数行の文字列の場合は一行ずつ放出する感じです。

f:id:onoty3d:20170811021822g:plain

f:id:onoty3d:20170811021818g:plain

f:id:onoty3d:20170811021820g:plain

 最後のやつは、UnityちゃんのThe Phantom Knowledge PVに触発されて作ったやつです。これ気になりますよね…!

www.youtube.com

 

さて、お次12日はkazumalabさんの「未定」です。
未来はまだ不確定…!?乞うご期待!