Version: 2018.2
public int Cast (Vector2 direction, RaycastHit2D[] results, float distance= Mathf.Infinity, bool ignoreSiblingColliders= true);

パラメーター

direction図形を投影する方向を表すベクトル
results結果を受け取る配列
distance図形を投影する最大距離
ignoreSiblingColliders同じ Rigidbody2D にアタッチされているコライダーを無視するかどうか

戻り値

int 引数の変数に結果が代入されます。

説明

コライダー自身は無視して、コライダーの位置を始点としてコライダーの形状をシーンに投影します。

この関数はコライダーの形状を元に、方向(direction)とオプションとして距離(distance)を指定してコライダーの位置からシーンに投影します。そして結果を与えられた配列(results)に代入します。 int型の返り値は results 配列に書き込まれた数です。results 配列のサイズを超えなかった場合、サイズは変わりません。この結果、メモリが割り当てられないため、 Raycast が頻繁に実行される場合にもガベージコレクションのパフォーマンスが向上します。

それに加えて、この関数は重なっている場合に Ray の始点にある他のコライダーも検知し、 Ray の始点はコライダー内部で、コライダーの表面と交差しません。これは衝突判定の法線が Ray のベクトルを逆に設定する場合、衝突判定の法線が計算できないという意味です。この問題が起こった場合、 RaycastHit2D が0になるため簡単に検知できます。

Note: Use of Collider2D.Cast() requires the use of Rigidbody2D. If no Rigidbody2D is declared Cast() does not work. However a Rigidbody2D can be static and attached to the Collider2D. This will make the Cast() work as expected. Also, if the Collider2D object has no Rigidbody2D object then it can collide with objects which have both Collider2D and Rigidbody2D objects.


public int Cast (Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, float distance= Mathf.Infinity, bool ignoreSiblingColliders= true);

パラメーター

direction図形を投影する方向を表すベクトル
contactFilterFilter results defined by the contact filter.
results結果を受け取る配列
distance図形を投影する最大距離
ignoreSiblingColliders同じ Rigidbody2D にアタッチされているコライダーを無視するかどうか

戻り値

int 引数の変数に結果が代入されます。

説明

コライダー自身は無視して、コライダーの位置を始点としてコライダーの形状をシーンに投影します。

この関数はコライダーの形状を元に、方向(direction)とオプションとして距離(distance)を指定してコライダーの位置からシーンに投影します。そして結果を与えられた配列(results)に代入します。 int型の返り値は results 配列に書き込まれた数です。results 配列のサイズを超えなかった場合、サイズは変わりません。この結果、メモリが割り当てられないため、 Raycast が頻繁に実行される場合にもガベージコレクションのパフォーマンスが向上します。

The contactFilter parameter, can filter the returned results by the options in ContactFilter2D.

それに加えて、この関数は重なっている場合に Ray の始点にある他のコライダーも検知し、 Ray の始点はコライダー内部で、コライダーの表面と交差しません。これは衝突判定の法線が Ray のベクトルを逆に設定する場合、衝突判定の法線が計算できないという意味です。この問題が起こった場合、 RaycastHit2D が0になるため簡単に検知できます。