テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

地面の接地判定を取得する3つの方法

3Dでも2Dでも地面の判定を取得したい時がある

そんな場合、概ね3つの方法が考えられる。
・CharacterControllerのisGroundを使う
・CheckSphereを使う
・SphereCastを足元に撃つ

Raycastも入れたい所だが、Raycastでまともに地形判定を行おうとすると「下」以外にも8方向にRayを飛ばさなければ正しく当たりが取れないのでお勧め出来ない。


まずはCharacterControllerを使い、isGroundを取得する方法。まあ色々と問題がある上、レイヤの設定ができないので色々と面倒だが、一番手っ取り早い方法なのは間違いない。

次にCheckSphere。これは「指定座標に円形の接触判定を行う」機能。これで足元の円形に対して判定を行えば(自分のレイヤはマスクする)、地形に接触しているかが判る。

最後はSphereCast。これは「球体の判定を下に伸ばす」判定で、要するにぶっといRay。これならば八方へRayを飛ばさず判定することが出来る。ああ便利便利。