origin | ワールド座標でのレイの開始地点 |
direction | レイの方向 |
maxDistance | レイが衝突を検知する最大距離 |
layerMask | レイヤーマスクはレイキャストするときに選択的に衝突を無視するために使用します。 |
queryTriggerInteraction | トリガーに設定されているものも検索対象にするか |
bool レイが任意のコライダーと交わる場合は true、それ以外は false
シーンにあるすべてのコライダーに対して、 origin
の位置から direction
の方向に maxDistance
の距離だけレイを投じます。
You may optionally provide a LayerMask, to filter out any Colliders you aren't interested in generating collisions with. queryTriggerInteraction
か、グローバル設定である Physics.queriesHitTriggers を使用してトリガーに設定されているコライダーとヒットさせるかを管理できます。
以下の例ではオブジェクトの現在位置から前方へ距離 10 ユニットのレイを投影するシンプルな Raycast を作成します。
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!"); } }
注意: Raycast は、その原点がコライダーの内側にある場合そのコライダーを検知しません。
コライダーをスクリプトやアニメーションで移動させる場合、物理ライブラリが更新されて Raycast が新しい位置に当たるよう最低でも1度 FixedUpdate の実行を待つ必要があります。
origin | ワールド座標でのレイの開始地点 |
direction | レイの方向 |
hitInfo | true が返されたときhitInfo はヒットしたコライダーについての情報が含まれています。(関連項目: RaycastHit) |
maxDistance | レイが衝突を検知する最大距離 |
layerMask | レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。 |
queryTriggerInteraction | トリガーに設定されているものも検索対象にするか |
bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。
シーン内のすべてのコライダーに対してレイを飛ばし、ヒットした情報を取得します
以下は現在のオブジェクトとヒットしたコライダー間の距離を報告する例です。
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); } }
以下はレイの投射距離を制限する maxDistance
パラメータを説明する例です。
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); } }
ray | 始点とレイの方向 |
maxDistance | レイが衝突を検知する最大距離 |
layerMask | レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。 |
queryTriggerInteraction | トリガーに設定されているものも検索対象にするか |
bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。
上記と同様ですが ray.origin
と ray.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!"); } }
ray | 始点とレイの方向 |
hitInfo | true が返されたときhitInfo はヒットしたコライダーについての情報が含まれています。(関連項目: RaycastHit) |
maxDistance | レイが衝突を検知する最大距離 |
layerMask | レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。 |
queryTriggerInteraction | トリガーに設定されているものも検索対象にするか |
bool 飛ばしたレイがコライダーにヒットした際に、true を返します。それ以外は false です。
上記と同様ですが ray.origin
と ray.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); } }