Help us understand the problem. What is going on with this article?

Unityのレイキャストとは何ぞや?(自分用)

More than 3 years have passed since last update.

Unityのレイキャストって何だろう?

最初に

このメモは自分用に残しているので大雑把な箇所が多いです。基本的にUnity公式から公開されているレイキャストに関するチュートリアル動画を文書化したものとなっています。ご了承ください。

レイキャストとは

レイキャストとはある地点から透明な線を特定の方向に引いて、そのRay上のどこかでコライダがあるか検知をするものです。例えば、ゲームであれば銃から弾を発射して敵に攻撃する場合などに用います。

Unityでは特にオブジェクトにタッチなどを行なった場合の当たり判定の実装として使われています。レイキャスターはキャンバス上にある全てのグラフィックを監視し、透明な線がどのオブジェクトにヒットしたのかを決定します。また、判定を行いたくない、つまりレイキャストをブロックするオブジェクトのタイプやマスクを設定することもできます。

関数は以下の通りです。

Physics.Raycast(Vector3 origin,Vector3 direction,out RaycastHit hitInfo, float distance, int LayerMask);

最初に、Rayの原点はワールド空間座標のどこかの地点となっています。今回の場合は銃の銃口の前の地点を選んでVector3変数のoriginとしてXYZを格納します。しかしワールド空間座標の向きは撃つ方向に向いていないため、二つ目の引数、directionに向きを格納する必要があります。この二つのVector3変数によりRayが構成されます。さらにRay変数により代用が可能であり、このデータ型で二つのVector3変数を格納できます。

//Ray myRay = new Ray(Vector3 origin, Vector3 direction);
//メインカメラ上のマウスカーソルのある位置からRayを飛ばす。
Ray myRay = Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(myRay,out RaycastHit hitInfo, float distance, int Layer Mask);

RaycastHit変数はコライダの衝突に基づいて情報を格納します。これによりコードの中で検索をかけて、どのオブジェクトがRayと交差するか判定できます。

最後に必須ではない関数が二つあります。一つはDistanceであり、Rayの長さが決まり、省略した場合はRayの長さはデフォルトでInfinityとなります。そしてレイヤーマスク(Layer Mask)です。これはUnityのレイヤーシステムにおける特定のレイヤー番号であり、もしRayに無視させたいオブジェクトがある場合そのレイヤーに配置することが実現できます。

Raycastの使い方

参考になりそうなブログのリンクまとめ(自分用)

参考

4_mio_11
スローペースで生きてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした