読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unity 2DのPolygonColliderの超点数を減らす

Unity 2DのPolygon Colliderを使うことでSpriteが使用するテクスチャの形状にそって当たり判定を設定する事ができます。

f:id:tsubaki_t1:20150115234221g:plain

 

このPolygonCillderはソコソコ綺麗に当たり判定を設定してくれるのですが、少しやり過ぎる感があります。例えば上のGIFアニメで使っている画像は242頂点もの頂点を利用します。

f:id:tsubaki_t1:20150115234845p:plain

単純に曲がり角を綺麗に繰り抜いているのもありますが、特に中抜きを行っている頂点が無駄です。この辺りを減らすにはEdit Colliderを使用します。

Edit Colliderは昔はShiftを押しながら頂点移動でしたが、Unity 4.5辺りで変更になりました。Edit Colliderを使用すると頂点の位置や数を設定する事ができます。各頂点ごとに。

f:id:tsubaki_t1:20150115235250p:plain


【Unity】Unity2DのPolygonCollider2Dを使ってみる

 

頂点を減らす

これはコレで便利なのですが、限度というものがあります。少ない超点数なら手動で何とかなりますが、量が多いと非常に面倒くさいです。なので頂点数を減らすエディタ拡張を用意しました。


PolygonColliderの多すぎる頂点を減らす。ベースはEngidia SCP - Eduard Bosch (eduardbosch@engidia.com)さんのRemoveInternalShapes

コレをEditorフォルダ以下に配置し、PolygonCollierを選択中にGameObject>Reduce Vertex of PolygonColliderを実行すると、

  • 内側の当たり判定
  • 密接しすぎている頂点
  • 連続して直線を描いている頂点

を削除します。

先ほどのスプライトに対して実行すると、242頂点のスプライトが72、もう一度実行するとさらに削減され38頂点まで減りました。

 

f:id:tsubaki_t1:20150116000139p:plain

それなりに形状は維持しているので、当たり判定も綺麗に出ます。

f:id:tsubaki_t1:20150116000422g:plain

但し、あくまでポリゴンを減らして頂点を調整しやすくするための物ですので、妙な所が削られるケースもあります。その辺りは手動で調整するのが良い感じです。