Version: 2017.2
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.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961