ゲーム制作

【Unity】オブジェクトのクリック判定の実装方法【3D編】

Unityで3Dの脱出ゲームを作るべく、3Dのオブジェクトをクリックしてボタンを模擬するスキルを手に入れました。

再び調べながら作るのを防ぐため、備忘録的にまとめます。

Unityのバージョン:2022.3.4f1

 

クリック時のアニメーションについては関連記事「 【Unity】クリックしたらアニメーションを動かす方法を解説 」をご覧ください。

 

【Unity】オブジェクトのクリック判定の実装方法【3D編】

次の4つの要素があれば、Unityでオブジェクトのクリックを判定することができます。

  1. カメラに「Physics Raycaster」をアタッチする。
  2. EventSystemを追加する。
  3. クリックするオブジェクトにColliderをアタッチする。
  4. クリックするオブジェクトにScriptをアタッチする。
  5. クリックするオブジェクトにEvent Triggerをアタッチする。

それぞれ解説していきます。

カメラに「Physics Raycaster」をアタッチする

Unity オブジェクト クリック 判定

Main CameraオブジェクトのInspectorで「Add Componet」ボタンをクリックし、Physics Raycasterを追加しましょう。

追加するだけでよく、パラメーターは初期値のままで良いです。

 

EventSystemを追加する

Unity オブジェクト クリック 判定

Componentメニューから、Event Systemを選択し、シーンの直下にEvent Systemを追加します。

こちらもパラメーターは変更不要です。

 

クリックするオブジェクトにColliderをアタッチする

本記事のサンプルではカプセル型のオブジェクトを追加し、カプセルオブジェクトをクリックするサンプルとします。

Unity オブジェクト クリック 判定

Colliderのオブジェクトの形状に合わせたものを使用すれば良いです。

今回はUnityがカプセルオブジェクトを追加したとき、デフォルトですでにColliderはアタッチされているのでそのまま使用します。パラメーターの変更も不要です。

 

クリックするオブジェクトにScriptをアタッチする

最低限のスクリプトとして、下記を準備します。単純にOnClickメソッドを作り、このメソッドにクリック時の処理を実装します。

using UnityEngine;
public class BaseButton : MonoBehaviour
{
  public void OnClick()
  {
    Debug.Log("OnClick");
  }
}

本記事の先頭に載せた動画ではクリックしたらオブジェクトを移動させるアニメーションを動かしつつ、テキストを1〜9まで変更するような処理を実装していました。

作成したスクリプトをクリックしたいオブジェクトにアタッチします。

Unity オブジェクト クリック 判定

※上記のスクリプトをアタッチすると、NumberとBoxはInspectorには表示されません。無視してください。

 

クリックするオブジェクトにEvent Triggerをアタッチする

Unity オブジェクト クリック 判定

クリックしたいオブジェクトの「Add Comoponent」で「Event Trigger」を追加します。その後、「Add New Event Type」ボタンをクリックし、「Pointer Click」を選択します。

そして、Pointer Clickのところに先ほどアタッチしたスクリプトを指定し、メソッドはOnClickを選択します。

これでオブジェクトをクリックしたら、OnClickが動くようになります!

 

まとめ

Unityの3Dオブジェクトのクリック判定についてまとめました。

UIのボタンだとメソッドを指定するだけで良いのですが、オブジェクトをクリックするには色々と手続きが必要で面倒ですね。。。

何はともあれ、これでオブジェクトをクリックする方法がわかったので、脱出ゲームのギミックでも考えます。

それでは。

 

 

 

 

 

 

 

-ゲーム制作