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

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

Physics2D.RaycastNonAlloc

マニュアルに切り替える
public static int RaycastNonAlloc(Vector2 origin, Vector2 direction, RaycastHit2D[] results, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

パラメーター

minDepth この値以上の Z 座標(深度)を持つオブジェクトのみを含みます。
maxDepth この値以下の Z 座標(深度)を持つオブジェクトのみを含みます。
origin 2D 空間上のレイの原点
direction レイの方向を示すベクトル
results 結果を受け取る配列
distance Raycast を行う最大距離
layerMask 特定レイヤーのオブジェクトを判定するフィルター

戻り値

int 投げかけた結果が返されます。

説明

シーンに対してレイを飛ばします

RaycastAll 関数に似ていますが、結果は引数の配列に返されるところが異なります。integer の戻り値はレイがヒットするオブジェクト数( 0 もありえます)ですが、もし返された要素をすべて格納できない場合にリサイズはされません。重要なことは、結果のためにメモリ割り当てが行なわれないために、Raycast が頻繁に実行された場合もガベージコレクションのパフォーマンスが改善されます。

さらにこの関数は線の開始地点のコライダーを検知します。この場合線がコライダーの中で開始していてコライダーの表面と交差していません。つまり返された衝突の法線がテストする線のベクトルの反対にセットされた場合、衝突の法線が計算できません。このような結果は RaycastHit2D の 0 地点で得られるため、これを検知するのは容易です。

関連項目: LayerMask クラス、RaycastHit2D クラス、RaycastLinecastDefaultRaycastLayersIgnoreRaycastLayerraycastsHitTriggers.