#はじめに
UnityでTileMapの当たり判定を取る場合、Tilemap Collider 2DとComposite Collider 2Dを使用することが多いと思います。TileMapをシーンにベタ置きするのではなくスクリプトを使ってTileをシーンに配置したい場合(ステージがたくさんあるパズルゲームなどを想定しています)、配置後にComposite Collider 2DをGenerateする必要があります。しかしスクリプトでTileを配置直後に
sample.cs
CompositeCollider2D.GenerateGeometry();
を実行してもComposite Collider 2Dが生成されません。
#解決策1
Tileを配置後にComposite Collider 2DをGenerateする前に1Fのウェイトを挿入する。
sample.cs
yield return new WaitForEndOfFrame();
CompositeCollider2D.GenerateGeometry();
#解決策2
Composite Collider 2DのGeneration Type = Synchronousで使用する。