TilemapCollider2D上にある複数のColliderの位置を取得する

投稿日:2018/07/29 投稿者:sai

Read in 2 minutes

概要

内容

フィールド上にColliderを使用できる障害物を楽に置く手段を考えた際に以下の方法が思いつきました.

  1. fieldのゲームオブジェクトの子要素として沢山置く
  2. tilemap colliderにtileを配置してCollider typeを設定する

2番のほうがなんとなく楽そうなので2番でやってみました.

しかし問題点があり,TileMap上のcolliderを有効にしようとするとCompositeCollider2Dにするしかないようなのですが,CompositeCollider2Dは1つのColliderとして扱われるので,障害物をよけたいと思い個々の位置を取得しようとしても全Colliderの中心とその外枠しか取得できないという問題がありました.

何とかしたかったのですが,良い方法が思いつかなかったためCompositeColliderの中身をすべて事前に調べるという方法でTileMap上の各Colliderを取得することにしました.

環境

Unity 2018.1

TileMap上の各Colliderを取得する

処理概要

ここを見て作りました.CompositeCollider2D

処理ポイント

  • CompositeCollider2DのGetPathPointCountですべてのコンポジット要素を見ていく
  • 1コンポジット要素はGetPathで取得できるため順番に取得する
  • 全頂点を毎回使うのが面倒なのでGetPathで取得した要素の中心点を取得する
  • 多角形だと今後の処理が面倒なので四角形に統一してしまう

ソースコード


category: unity



カテゴリ

タグ

TilemapCollider2D上にある複数のColliderの位置を取得する | Homepage