Heptoのパズルロジックをプログラミングしている。いま作っているパズルは複数の額縁を移動させて解くもの。その移動に当たっては、他の額縁や一定領域の枠に当たればそれ以上移動しないロジックが必要となる。このロジックを難しくしている原因は、額縁の形状が “L” の様な凹みのある多角形であること。
最初に、Unityの Colliderを使用することとした。Unityにある機能だし、凹みのある形状も Mesh Colliderで対応してくれる。
しかし、開発していくと色々と問題点があった。
そこで昔ながらの、額縁が動く範囲を移動単位で区分けして配列とし、そこに額縁の形状のビットパターンを並べていく処理とした。単純で計算も少なく移動前に衝突を検出可能である。
課題があるとすれば、形状に合わせてビットパターンを用意しなければならないことと、複雑な形状や立体物は扱えないこと。そのときには、Box Colliderの集合体のような衝突検知を自前で作成することとなるだろう。