この記事ではUnityで3Dオブジェクトのクリック判定について解説していきたいと思います。
Unityの3Dオブジェクトのクリック判定はよく使用する処理にもかかわらず、2Dのクリックよりも少し手間が必要です。
ただ、実装方法さえ分かれば、非常に簡単ですので、この記事を参考にしてぜひ実装してみてください。
Unityの3Dオブジェクトのクリック判定
では、Unityの3Dオブジェクトのクリック判定の実装方法をご紹介します。
3Dオブジェクトを配置
まずはクリック判定対象となるオブジェクトをSceneビューに配置します。
対象となるオブジェクトは何でもオッケーです。今回はプリミティブのCubeを配置しました。
※マテリアルを付与して水色のCubeにしています。
■オブジェクトを配置
オブジェクトにコライダー(Collider)を付与する
3Dオブジェクトのクリック判定を行う際には、コライダー(Collider)が必須になります。
コライダーも付与しましょう。
■コライダーを付与
今回はプリミティブのCubeオブジェクトを使用しているので、あらかじめコライダーが付与された状態になります。
もしオブジェクトにコライダーが付与されていないのであれば、コライダーを追加しましょう。
また、今回は最初から付与されているBoxColliderを使用していますが、コライダーであれば何でもOKです。
イベントトリガー(Event Trigger)のコンポーネント追加
3Dオブジェクトのクリック判定のためにイベントトリガー(Event Trigger)のコンポーネントも必要になります。
イベントトリガーを追加する事で「クリックした時の動作」を実装する事ができる様になります。クリック判定に必須ですね。
Inspectorウインドウから、オブジェクトにイベントトリガーのコンポーネントを追加しましょう。
■イベントトリガー(Event Trigger)を追加
「Add New Event Type」でクリック時のイベントを追加する事になりますが、今の時点では、とりあえずイベントトリガー(Event Trigger)を追加しておいてもらえればOKです。
UIのイベントシステム(Event System)追加
忘れてしまいがちですが、イベントトリガーを使用する際にはイベントシステム(Event System)とを追加する必要があります。イベントシステムを追加しないとイベントトリガーが正常に機能しません。
以下の手順でイベントシステムを追加しましょう。
ヒエラルキー(Hierarchy)ウインドウ > UI > Event System
■イベントシステム(Event System)を追加
ヒエラルキー(Hierarchy)ウインドウにイベントシステム(Event System)が追加されました。
■イベントシステム(Event System)が追加された
メインカメラにフィジックスレイキャスター(PhysicsRaycaster)を追加
3Dオブジェクト名をクリック判定するためにはメインカメラ(MainCamera)から、ビームの様なものを飛ばす必要があります。
そのためにメインカメラにフィジックスレイキャスター(PhysicsRaycaster)を追加します。
■フィジックスレイキャスター(PhysicsRaycaster)を追加
基本的に設定値は初期設定のままでOKです。
EventMaskが「Everything」になっている事だけ確認して下さい。
クリック時の動作を設定
最後にオブジェクトをクリックした際の動作を設定します。
ポインタークリック(Pointer Click)を追加
先ほど追加したイベントトリガーのコンポーネントを確認してみてください。
「Add New Event Type」でポインタークリック(Pointer Click)を追加します。
これでボタンを押した場合の動作を設定することができます。実際の動作はスクリプトで制御します。
■ポインタークリック(Pointer Click)
C#スクリプトを作成
クリック時にキューブを破壊する簡単なスクリプトを作成します。
■C#スクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickObject : MonoBehaviour { void Start(){} void Update(){} //関数:オブジェクトをクリックした場合の動作 public void OnClickObject() { //オブジェクトを消す gameObject.SetActive(false); } } |
ボタンクリック時の実行スクリプトを設定
作成したスクリプトをまずはCubeオブジェクトにアタッチします。
そして、ポインタークリック(Pointer Click)のイベントとして、先ほど作成したオブジェクトを破壊する関数を設定します。
■オブジェクトを破壊する関数を設定
Unityの3Dオブジェクトのクリック判定動作の確認
では実際に3Dオブジェクトをクリックしたときの動作を確認してみましょう。
クリックをして3Dオブジェクトが消えれば、想定通りにクリック判定がされていることがわかります。
■3Dオブジェクトのクリック判定動作確認
クリックをすることで、オブジェクトが破壊されました。無事に3Dオブジェクトのクリック判定がされています。
まとめ
今回はユニティーで3Dオブジェクトのクリック判定の方法についてご紹介しました。
今回実践したことをおさらいします。
■まとめ
- 3Dオブジェクトを配置
- オブジェクトにColliderを付与
- Event Triggerのコンポーネント追加
- UIのイベントシステムEvent System追加
- メインカメラにPhysicsRaycasterを追加
- Pointer Clickを追加
- C#スクリプトをしてPointer Clickのイベントに設定
冒頭でもお伝えしたように、今回紹介した内容は3Dのゲームを作る際にはよく使用される実装方法なのでしっかりと覚えておきましょう。