カテゴリー
制作

Raycast

一人称視点でアイテムを拾えるようにするため、レイヤーマスクとレイキャストを使うことにしたので覚書を書いておく。以前も使ったことがあるけど、しばらく触らないとすぐに忘れてしまう。

  • Physics.Raycastによって得られる情報はRaycastHit構造体で受け取る。
  • Debug.DrawRay を使うとScene画面で確認できる光線を表示する。
    引数は 開始位置、向きと長さ、色、消えるまでの時間、カメラから隠れた線を描画するかどうか。
  • レイヤーマスクを指定するとビットが1のレイヤーに対してのみ判定を行う。
    ビットのシフト演算や反転などを使うとコードが分かりやすくなる。
  • DrawRay は方向も長さも一つのベクトルで指定するのに対し、Raycast はベクトルで方向、float変数で最大距離を指定する。

とりあえずProBuilderで適当にアイテムっぽいものを作って床に置き、レイを飛ばすスクリプトをプレイヤーのカメラにアタッチ。近づいて視線を向ける事でレイが当たっている事を確認できた。
上記でレイが当たるオブジェクトはアイテム用のレイヤーでマスクされている。
RaycastHit を使いアイテムにアタッチされているはずのコンポーネントを取得しメソッドを呼び出す、という流れでアイテムに何らかの操作ができるはず。

とは言ったものの全然進んでいない…。週末にまとまった時間があっても疲れていることを自分への言い訳にしている気がする。もっとモチベーションを高めるにはどうしたらいいのだろうか。
作品を作ることが面白すぎて止め時が分からない、という状態になるにはどうすればいいのか。それとも作品を作るのは楽しいというより苦しいけどやる、というものなのか。単純に作品をつくるという事に自分は向いていないのか。
…という事を考えるのもブログのネタになりそうではある。