Unity RaycastHit2Dがその物体自身にヒットする問題

ハマったのでメモ。

やりたかったこと:ぷよぷよみたいなパズルゲームで、ぷよを落としたとき隣接するぷよの色を取得する。

方法:ぷよが落ちたとき上下左右にRaycastを飛ばし、Hitしたぷよの色を調べる。ぷよぷよの性質上、コライダは機能させたかったので、ぷよにIsTrigger設定なし

困ったこと:HitInfoを調べると、常に落としたぷよと同じ色のぷよにヒットしている。(していなくても!)

原因:デフォルトの設定ではRaycastをオブジェクトの内側から飛ばしている。そのため、外部のオブジェクトにヒットする以前に自分自身に当ってしまう。ヒットしたGameObjectの名前を調べれば、常にHit情報がRaycastを送り出したぷよと同じ名前を持つことから、どちらも同じオブジェクトだとわかる。

解決法:デフォルトになっている設定を変える。(ほかにもあると思うけれど……)

answers.unity3d.com