1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. 【Unity】Raycastの使い方~Rayを飛ばして形も変化させてみよう!~
【Raycastの使い方】Rayを飛ばして形も変化させてみよう!

【Unity】Raycastの使い方~Rayを飛ばして形も変化させてみよう!~

UnityでRaycastを使いこなそう!

今回は、Unityの「Raycast」の基本的な使い方について解説してきます!

Raycast を使いこなせれば、タップでのオブジェクト情報の取得や、銃で敵を打つなどができるようになります。

それでは早速、見ていきましょう!

Raycastとは?

Ray とは、直訳すると「光線」という意味です。

シーン上の指定した地点から光線を飛ばし、光線上にあるコライダーの情報を取得するのに用いられます。

その時に使用するのが、 Physics.Raycast() です。

戻り値は bool 型で、Ray がコライダーにヒットした場合は「true」、それ以外は「false」を返します。

Physics.Raycast()

ここで関数の説明をします。

origin は Ray の開始地点(ワールド座標)、direction は Ray を飛ばす方向です。

origin と direction は、必ず与えなければいけません

hitInfo は、Ray が当たったコライダーを持つオブジェクトの情報で、オブジェクトの情報を取得したい場合に使用します。

maxDistance は、Ray が衝突を検知する最大の距離で、与えなかった場合は Ray は無限に続きます。

Rayを飛ばしてみよう!

次は、実際に Ray を飛ばして、当たり判定をしてみましょう。

準備として、シーン上に球とキューブを、1つずつ設置してください。

ここでは、分かりやすいように、球の真上にキューブを設置しましょう。

コライダーがアタッチされているのかも、忘れずに確認してください。

以下のコードは、スペースボタンを押すと球からキューブに Ray が飛ばされ、当たったらキューブを消滅させるサンプルコードです。

スクリプトは、球にアタッチしてください。

Rayを可視化させる

次は、上で飛ばした Ray を、可視化させてみましょう!

可視化には、 Debug.DrawRay() を使用します

それぞれの意味は、次のとおり。

  1. origin:Ray の開始地点
  2. dir:Ray の方向と長さ
  3. color:Ray の色
  4. duration:Ray を表示する時間(秒)

以下は、サンプルコードです。

Ray の形を変えてみよう!

これまでに紹介してきたのは、最も一般的な線形の Ray です。

ここでは、様々な形の Ray を紹介していきます。

SphereCast

SphereCast() は、球形の Ray を飛ばして、当たり判定をする関数です

radius には、球の半径を与えます。

それ以外の引数は、 Raycast() と同様です。

以下は、サンプルコードです。

BoxCast

BoxCast() は、キューブ型の Ray を飛ばして当たり判定をする関数です。

それぞれの意味は、次のとおり。

  1. center:ボックスの中心の座標です。
  2. halfSize:実際のボックスの半分のサイズを与える引数
  3. orientation:ボックスの回転を与える引数

例えば、サイズが Vector3( 1, 1, 1) のボックスを作る際は、 Vector3( 0.5f, 0.5f, 0.5f) を与えます。

ボックスの中心から、各面への距離だと考えると分かりやすいかも知れません。

残りの3つは、Raycast と同じにものになります。

以下は、サンプルコードです。

今回は、キューブ型ですので、キューブの方にアタッチしましょう。

CapsuleCast

CapsuleCast() は、カプセル型の Ray を飛ばして、当たり判定をする関数です。

「point1」「point2」は、カプセルの両端の円の中心の座標で、「radius」はその半径です。

「point1」「point2」は、カプセルの両端の円の中心の座標で、「radius」はその半径

残りの3つは、Raycast と同じです。

以下はサンプルコードです。

Sphere の代わりに Capsule を生成して、Capsule にスクリプトをアタッチしましょう。

さいごに

Raycast は、とても便利な機能です。

今回紹介できなかった機能も、まだたくさんあります。

ある程度の理解が進んだら、ぜひ調べてみてくださいね!

こちらの記事もオススメ!


書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア