public static bool Raycast (Vector3 origin, Vector3 direction, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

パラメーター

origin ワールド座標でのレイの開始地点
direction レイの方向
maxDistance レイが衝突を検知する最大距離
layerMask レイヤーマスクはレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteraction トリガーに設定されているものも検索対象にするか

戻り値

bool レイが任意のコライダーと交わる場合は true、それ以外は false

説明

シーンにあるすべてのコライダーに対して、 origin の位置から direction の方向に maxDistance の距離だけレイを投じます。



queryTriggerInteraction か、グローバル設定である Physics.queriesHitTriggers を使用してトリガーに設定されているコライダーとヒットさせるかを管理できます。

以下の例ではオブジェクトの現在位置から前方へ距離 10 ユニットのレイを投影するシンプルな Raycast を作成します。

注意: Raycast は、その原点がコライダーの内側にある場合そのコライダーを検知しません。

コライダーをスクリプトやアニメーションで移動させる場合、物理ライブラリが更新されて Raycast が新しい位置に当たるよう最低でも1度 FixedUpdate の実行を待つ必要があります。

using UnityEngine;

public class ExampleClass : MonoBehaviour { void FixedUpdate() { Vector3 fwd = transform.TransformDirection(Vector3.forward);

if (Physics.Raycast(transform.position, fwd, 10)) print("There is something in front of the object!"); } }

public static bool Raycast (Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

パラメーター

origin ワールド座標でのレイの開始地点
direction レイの方向
hitInfo true が返されたときhitInfo はヒットしたコライダーについての情報が含まれています。(関連項目: RaycastHit)
maxDistance レイが衝突を検知する最大距離
layerMask レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteraction トリガーに設定されているものも検索対象にするか

戻り値

bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。

説明

シーン内のすべてのコライダーに対してレイを飛ばし、ヒットした情報を取得します

以下は現在のオブジェクトとヒットしたコライダー間の距離を報告する例です。

以下はレイの投射距離を制限する maxDistance パラメータを説明する例です。

using UnityEngine;

public class RaycastExample : MonoBehaviour { public Missile missile;

void FixedUpdate() { RaycastHit hit;

if (Physics.Raycast(transform.position, -Vector3.up, out hit)) print("Found an object - distance: " + hit.distance); } }
using UnityEngine;

public class RaycastExample : MonoBehaviour { public Missile missile;

void FixedUpdate() { RaycastHit hit;

if (Physics.Raycast(transform.position, -Vector3.up, out hit, 100.0f)) print("Found an object - distance: " + hit.distance); } }

public static bool Raycast (Ray ray, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

パラメーター

ray 始点とレイの方向
maxDistance レイが衝突を検知する最大距離
layerMask レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteraction トリガーに設定されているものも検索対象にするか

戻り値

bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。

説明

上記と同様ですが ray.originray.direction を、origin と direction の代わりに使用します

using UnityEngine;

public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, 100)) print("Hit something!"); } }

public static bool Raycast (Ray ray, out RaycastHit hitInfo, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);

パラメーター

ray 始点とレイの方向
hitInfo true が返されたときhitInfo はヒットしたコライダーについての情報が含まれています。(関連項目: RaycastHit)
maxDistance レイが衝突を検知する最大距離
layerMask レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteraction トリガーに設定されているものも検索対象にするか

戻り値

bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。

説明

上記と同様ですが ray.originray.direction を、origin と direction の代わりに使用します

以下は衝突が検知されている間レイの長さに沿った線を描画する例です。

using UnityEngine;

public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit;

if (Physics.Raycast(ray, out hit, 100)) Debug.DrawLine(ray.origin, hit.point); } }