Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Physics.Raycast

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

マニュアルに切り替える
public static function Raycast(origin: Vector3, direction: Vector3, maxDistance: float = Mathf.Infinity, layerMask: int = DefaultRaycastLayers, queryTriggerInteraction: QueryTriggerInteraction = QueryTriggerInteraction.UseGlobal): bool;
public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Parameters

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

Returns

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

Description

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

衝突させたくないコライダーに反応させないために、オプションで LayerMask を指定することもできます。

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

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

no example available in JavaScript
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 の実行を待つ必要があります。


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

Parameters

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

Returns

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

Description

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

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

no example available in JavaScript
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 パラメータを説明する例です。

no example available in JavaScript
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 function Raycast(ray: Ray, maxDistance: float = Mathf.Infinity, layerMask: int = DefaultRaycastLayers, queryTriggerInteraction: QueryTriggerInteraction = QueryTriggerInteraction.UseGlobal): bool;
public static bool Raycast(Ray ray, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Parameters

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

Returns

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

Description

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

no example available in JavaScript
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 function Raycast(ray: Ray, out hitInfo: RaycastHit, maxDistance: float = Mathf.Infinity, layerMask: int = DefaultRaycastLayers, queryTriggerInteraction: QueryTriggerInteraction = QueryTriggerInteraction.UseGlobal): bool;
public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Parameters

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

Returns

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

Description

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

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

no example available in JavaScript
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); } }