Version: 2017.3
public static int LinecastNonAlloc (Vector2 start, Vector2 end, RaycastHit2D[] results, int layerMask= DefaultRaycastLayers, float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);

パラメーター

minDepth この値以上の Z 座標(深度)を持つオブジェクトのみを含みます。
maxDepth この値以下の Z 座標(深度)を持つオブジェクトのみを含みます。
start ワールド座標での線の開始地点
end ワールド座標での線の終了地点
results 線と交差するオブジェクトの配列を返します
layerMask 特定のレイヤーのコライダーのみを判別するためのフィルター

戻り値

int Returns the number of results placed in the results array.

説明

シーン上のコライダーに対して線がヒットするか調べます

Linecast とはワールド空間の 2点間に張った仮想の線です。このセンサーと接触したオブジェクトはすべて検知され報告されます。Raycast と似ていますが、その違いは Raycast の場合は原点と方向で線を指定するということです。

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

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

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