3Dでも2Dでも地面の判定を取得したい時がある
そんな場合、概ね3つの方法が考えられる。
・CharacterControllerのisGroundを使う
・CheckSphereを使う
・SphereCastを足元に撃つ
Raycastも入れたい所だが、Raycastでまともに地形判定を行おうとすると「下」以外にも8方向にRayを飛ばさなければ正しく当たりが取れないのでお勧め出来ない。
まずはCharacterControllerを使い、isGroundを取得する方法。まあ色々と問題がある上、レイヤの設定ができないので色々と面倒だが、一番手っ取り早い方法なのは間違いない。
次にCheckSphere。これは「指定座標に円形の接触判定を行う」機能。これで足元の円形に対して判定を行えば(自分のレイヤはマスクする)、地形に接触しているかが判る。
最後はSphereCast。これは「球体の判定を下に伸ばす」判定で、要するにぶっといRay。これならば八方へRayを飛ばさず判定することが出来る。ああ便利便利。