【Unity】RayでGameObjectのクリックを検出する方法

部屋の中にスイッチオブジェクトを導入してクリックすると鍵が現れる処理を実装してみました。

すいません、鍵の色が棚と被っており少し分かりづらいGIFになっています。

3Dのモデルは今まで通りSketchUpで作成しています。

鍵を隠しておく

鍵はゲーム開始時には出現しないようにします。

SetActiveでfalseにするとフィールドに出現しません。

画面クリック時の処理

まずはスイッチにボックスコライダをセットします。

InspectorのAdd Componentを選択後、Physics➡︎Box Collider

黄色い線がコライダです。

サイズやポジションはスイッチが覆いかぶさる程度に調整します。

次にスクリプトを更新します。

処理の流れとしては以下の通り。

  1. クリックした時にRayで光線を出す
  2. 光線がオブジェクトに当たったらオブジェクトを取得する
  3. オブジェクトがスイッチだったら鍵を出現させる

Unityの世界は3次元ですが、私たちユーザがクリックするのは二次元平面です。

二次元でクリックされた場所を元に、3次元の世界に光線を出すためのクラスがRayです。

今回はこのRayクラスを使ってボタンをクリックしてみます。

keyApperの内容はもうお分かりですね。

falseにした鍵情報をtrueにすれば良いです。

おわり。

参考

https://senkouemaki.com/lab/?p=98