Unity事例ノート

UNITY

Raycastによる接地判定

Raycastを使って、地面の接触判定をつくってみましょう。

Cubeの下にRayを出して可視化。

床に接地していればTrue、離れるとFalseを返し、コンソールに表示させます。

このようなRaycastを使えば、より詳細に、当たり判定を設けることができます。

関連記事:
向いている方向へRaycastを出す
Raycastによる特定オブジェクトの接触判定
左右にRaycastの接触判定をつくる
斜めに向けたRaycastで衝突判定
オブジェクトに触れていれば動く
ジャンプで壁に触れると引っ付く
クリックした位置にオブジェクトを生成(Ray)
Rayが当たった位置までの距離
Rayに当たったオブジェクトを削除

Debug.DrawRayによる可視化

平面とCubeを作成し、Cubeを地上に出します。

Cubeにリジッドボディを追加します。

ジャンプの動きと、Raycastの接地判定、可視化のプログラムを作成します。

CubeJump.csを作成し、Cubeに追加します。

ゲームプレイして、シーンビューを見てみましょう。

Rayが下方向に向かって、赤線で表示されています。

rayPositionには、Rayのスタート位置を格納しています。

今回、スタート位置はすべて0としていますが、プレーヤーを基準として、座標で細かく設定することができます。

rayには、スタート位置と、Rayを飛ばす方向を格納。

Vector3.downは下方向を指します。

下方向に向かって、長さ1.0のRayが出現。

これを、bool型のisGroundに入れ、接地判定を行います。

Debug.DrawRayでは、スタート位置、方向と長さ、色を入れて、Rayを目に見える状態にします。

クリックしてジャンプしてみましょう。

接地状態ではtrueに、ジャンプして地面から離れると、falseに変わります。

関連記事:
向いている方向へRaycastを出す
Raycastによる特定オブジェクトの接触判定
左右にRaycastの接触判定をつくる
斜めに向けたRaycastで衝突判定
オブジェクトに触れていれば動く
ジャンプで壁に触れると引っ付く
クリックした位置にオブジェクトを生成(Ray)
Rayが当たった位置までの距離
Rayに当たったオブジェクトを削除