Uni2Dが余りにもぶっ飛んで高性能だったので、使い方をメモ
最新版準拠の修正版はこちら。
tsubakit1.hateblo.jp
とりあえず今日はスプライトの生成とAtlasの設定、当たり判定の設定について。
スプライトアニメーションについては第二階、スケルタルアニメーションについては第三回にでもしようと思う。
">
とりあえずスプライトと物理演算だけのデモ。
https://dl.dropboxusercontent.com/u/56297224/UnitySumple2/uni2d%20test3/uni2d%20test3.html
■スプライトの追加方法
シーンにスプライトを追加するには、メニューバー > Uni2D > Sprite Editorでスプライトエディタを開いた状態でシーンへテクスチャをD&Dする。それだけ。
スプライトには3種類のモードがあり、どれもメリット・デメリットがある。
1.quadモード
基本的なスプライトで、要するに板ポリに貼ってる。
単純かつ一番綺麗に出るが、フィルレートの問題が強く出やすい。※1
2.Texture to Meshモード
テクスチャからアルファ値を抜いたメッシュを生成する。
ポリゴン数は多くなるが、フィルレートの影響は少なくパフォーマンスは良好。
Cut offの範囲を上手く設定しないと、若干見た目が汚くなる。
3.Gridモード
板ポリをGrid的に並べる。完全に透明な部分には並べないので、1よりも良好。
グリッドを細かくすればするほど重いが、綺麗にくり抜く。
※画面上に点を打つスピード。フィルレートの高い端末は余り無く、パフォーマンスに大きく影響を与える要素の一つ。テクスチャは透明な場合も「透明色を塗る」を行う為、透明を重ねたりすると同じ場所に何度も点を打つことになり、パフォーマンスに大きく影響を与える。
■Atlasの生成について
次にドローコール削減のためにテクスチャを1個にパックする。端末性能のインフレでほぼドローコールは無視出来る要因となったが、やはり少ないに越したことはない。
パックするには、パックしたいUni2DSpriteオブジェクトを選択し、含めるUseAtlasを選択するだけ。(無い場合はAtlasを追加する)。これだけでテクスチャは1個にパックされ、ドローコールは1個に収まる。
NGUI&TexturePackerと違う点は2つ。
一つはテクスチャを更新するとAtlasも即座に更新される点、もう一つは、横向き配置の対応だ。横向き配置は大分スペースの削減になる。特にパック前のテクスチャを更新するとパック後のテクスチャにも反映する機能は中々に革新的だと思う。
ちなみに、一度パックすると以降はテクスチャを追加した場合もAtlasから参照するようになるらしい。なので、Atlas云々を余り意識せず作りこむ事が出来る。便利便利。
■Physicsについて
Uni2Dはメッシュ生成の応用みたいな感じで、テクスチャから当たり判定を作ることが出来る。生成する判定は概ね「メッシュコライダー」なので、重いしメッシュコライダーのマイナス部分を受け継ぐ点に注意。
Physicsモードは大きく分けて2種類、staticとdynamicモードがある。これの違いは単純で、rigidbodyコンポーネントがあるかないかだけ。要するにstaticは動かないこと前提。
physicsのタイプを決めたら、次はCollision Typeを設定する。
Collision Typeは「Convex」「Concave」「Compound」の3種類。
Convexは、α値で算出した外枠からメッシュを生成する。大雑把な形状を取るのでポリゴン数が少なく良心的。くぼみ等は取れない。図では脇の部分が判定が抜けていないのが判る。
Concaveはα値で抜けている部分に従って当たり判定を作成していく。より細かいディティールで判定が取れるが、メッシュも細かいので負荷は高め。キッチリと脇の部分も抜けている。
それとConcave同士は当たり判定が発生しない。つまり、地形にConcaveを使う場合は、キャラクターは非Concaveにする必要がある。
ちなみにAdvanced Collider SettingsのPolygonize Holesにチェックを入れると、テクスチャの内側のα値の部分も抜いてくれる。上は抜く前、下は抜いた後。当然ポリゴン数がry
最後にCompoundだが、これはConvexのコライダーを外出ししたようなもの。つまり、コライダー毎に微調整が可能となっている。
ただし、そもそもポリゴンが自動生成なので、調整は非常に難しいと思う。