Unity事例ノート

UNITY

Rayを当たらなくするオブジェクト

Ray(光線)をオブジェクトに照射し、その当たり判定で、いろいろな制御が可能です。

たいへん便利なRayCastの機能ですが、どんなオブジェクトでも当たってしまうと、かえって都合が悪い場合もあります。

オブジェクトによってはRayを当てないように、設定してみましょう。

関連記事:
クリックした位置にオブジェクトを生成(Ray)
Rayが当たった位置までの距離
Rayに当たったオブジェクトを削除

Rayの当たった場所にオブジェクトを移動

Cube、シリンダー、平面を作成しました。

次に、Rayの当たった場所に置くオブジェクトを作成します。

Sphereを作成してサイズを変更し、赤色をつけました。

SphereMove.csを作成し、Sphereに追加します。

これで、すべてのオブジェクトに対して、Sphereを置くことができます。

オブジェクトごとに設定する場合

オブジェクトごとに、Rayを当てない簡単な設定を行います。

今回は、Cubeを当てないようにします。

Cubeのレイヤーを、Ignore Raycastに変更しましょう。

プレイして確認します。

Cubeだけは、クリックしてもRayCastがぶつからず、Sphereを置くことができません。

スクリプトで制御する

続いて、レイヤーごとにRayの衝突を有効にするスクリプトを作ってみましょう。

レイヤーの8番に、RaycastHitという名前のレイヤーを作成しました。

今回は、CubeとPlaneに対してだけ、Rayを有効にします。

それぞれRaycastHitのレイヤーを設定しましょう。

SphereMove.csを開き、もう一度編集します。

プレイしてみましょう。

CubeとPlaneには、Rayが有効ですが、シリンダーには無効になります。

関連記事:
クリックした位置にオブジェクトを生成(Ray)
Rayが当たった位置までの距離
Rayに当たったオブジェクトを削除