origin | 2D 空間上のレイの原点 |
direction | The vector representing the direction of the ray. |
distance | Ray を投影する最大距離 |
layerMask | 特定のレイヤーのコライダーのみを判別するためのフィルター |
minDepth | この値以上の Z 座標(深度)を持つオブジェクトのみを含みます。 |
maxDepth | この値以下の Z 座標(深度)を持つオブジェクトのみを含みます。 |
RaycastHit2D 投げかけた結果が返されます。
シーンのコライダーに対してレイを飛ばします
Raycast は例えるならば、空間上のある地点から特定方向へ発射されたセンサーのようなものです。センサーと接触したすべてのオブジェクトは検知され報告されます。
この関数はレイがヒットするコライダーへの参照をもつ RaycastHit オブジェクトを返します。何もヒットしない場合は、結果のコライダープロパティーは null になります。layerMask を使用すると、特定のレイヤーのオブジェクトだけを検出できます(例えば敵キャラクターのみ検出するように設定できます)。
Overloads of this method that use contactFilter
can filter the results by the options available in ContactFilter2D.
Raycast は視界の範囲の判定、銃弾によりターゲットの当たり判定、さらに多くのゲームシーンで役に立ちます。
さらにこの関数は線の開始地点のコライダーを検知します。この場合線がコライダーの中で開始していてコライダーの表面と交差していません。つまり返された衝突の法線がテストする線のベクトルの反対にセットされた場合、衝突の法線が計算できません。このような結果は RaycastHit2D の 0 地点で得られるため、これを検知するのは容易です。
関連項目: LayerMask クラス、RaycastHit2D クラス、RaycastAll、Linecast、DefaultRaycastLayers、IgnoreRaycastLayer、raycastsHitTriggers.
using UnityEngine;
public class Example : MonoBehaviour { // Float a rigidbody object a set distance above a surface.
public float floatHeight; // Desired floating height. public float liftForce; // Force to apply when lifting the rigidbody. public float damping; // Force reduction proportional to speed (reduces bouncing).
Rigidbody2D rb2D;
void Start() { rb2D = GetComponent<Rigidbody2D>(); }
void FixedUpdate() { // Cast a ray straight down. RaycastHit2D hit = Physics2D.Raycast(transform.position, -Vector2.up);
// If it hits something... if (hit.collider != null) { // Calculate the distance from the surface and the "error" relative // to the floating height. float distance = Mathf.Abs(hit.point.y - transform.position.y); float heightError = floatHeight - distance;
// The force is proportional to the height error, but we remove a part of it // according to the object's speed. float force = liftForce * heightError - rb2D.velocity.y * damping;
// Apply the force to the rigidbody. rb2D.AddForce(Vector3.up * force); } } }
origin | 2D 空間上のレイの原点 |
direction | The vector representing the direction of the ray. |
contactFilter | The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. |
results | The array to receive results. The size of the array determines the maximum number of results that can be returned. |
distance | Ray を投影する最大距離 |
int
Returns the number of results placed in the results
array.
Casts a ray against colliders in the Scene.
Raycast は例えるならば、空間上のある地点から特定方向へ発射されたセンサーのようなものです。センサーと接触したすべてのオブジェクトは検知され報告されます。
This function returns the number of contacts found and places those contacts in the results
array. The results can also be filtered by the contactFilter
.
See Also: ContactFilter2D and RaycastHit2D.