3D空間に配置した2Dオブジェクトを「ボタン化」します。
オブジェクトをクリックしたら、別オブジェクトが表示・非表示されるようにしてみます。
簡易版
- カメラ設定 「Main Camera」に「Physics 2D Raycaster」追加。
- イベントシステム 「Hierarchy」に「Event System」を作成。
- C#スクリプト作成 オブジェクトにアタッチ。
オブジェクト変数指定。 - イベントトリガー オブジェクトに「Event Trigger」追加。
イベントタイプ「PointerClick」追加。
オブジェクトと関数指定。 - コライダー設定 オブジェクトに「Box Collider 2D」追加。
目標動作サンプル
「board_info_yu(ボード内の紙)」をクリックしたら「Plane(拡大された紙)」を表示・非表示に。
以下の項目設定は、順番通りでなくても大丈夫です。
それぞれ設定していきましょう。
カメラの設定
カメラに、イベントを検知するためのシステム「Physics 2D Raycaster」を設定します。
今回の指定オブジェクトが2Dスプライトのため2D用の「Physics 2D Raycaster」を選択していますが、指定オブジェクトが3Dモデルの場合は3D用の「Physics Raycaster」を選択する必要があります。
逆に言うと3Dテンプレート内であっても2Dオブジェクトには2D用の設定を選ばないといけないということみたいです。
ゲームカメラであるオブジェクト「Main Camera」にコンポーネントを追加します。
「Main Camera」を選択し、インスペクターの「Add Component」ボタンを押します。
タブで「Event」>「Physics 2D Raycaster」を選択します。
コンポーネントに「Physics 2D Raycaster」が追加されます。
カメラの設定は以上です。
Event System を作成
イベント検知のためのシステム「Event System」を追加します。
「Hierarchy」ウィンドウの空いてる個所を右クリックしてメニューを開きます。
メニューの中から「UI」>「Event System」を選択します。
「Hierarchy」内に「EventSystem」が追加されます。
「EventSystem」設置は以上です。
スクリプトをアタッチ
表示・非表示させるためのスクリプトを記述します。
「Assets」フォルダ内に新規スクリプトを作成します。
名前は任意です。今回は「click」としました。
スクリプトの中身です。
クラス名はファイル名と同じにしましょう。
関数名は任意です。今回は「ClickEVENT」としました。
using UnityEngine;
using UnityEngine.EventSystems;
public class click : MonoBehaviour
{
// ここでPlaneのゲームオブジェクトを参照します
public GameObject plane;
// クリックイベントを処理する関数
public void ClickEVENT()
{
if (plane != null)
{
// Planeのアクティブ状態をトグルします
plane.SetActive(!plane.activeSelf);
}
}
}
作成した「click」スクリプトをオブジェクト「board_info_yu(ボード内の紙)」にアタッチします。
「board_info_yu(ボード内の紙)」のインスペクターにスクリプトが追加されます。
そのままスクリプトコンポーネント内のパブリック変数部分に表示非表示するオブジェクト「Plane(拡大された紙)」をドラッグして登録します。
スクリプト作業は以上です。
イベントトリガーを設定
オブジェクト「board_info_yu(ボード内の紙)」に「Event Trigger」コンポーネントを追加します。
ボタンのような機能を追加するためのシステムです。
オブジェクト「board_info_yu(ボード内の紙)」を選択し、インスペクターの「Add Component」ボタンを押します。
タブで「Event」>「Event Trigger」を選択します。
コンポーネントに「Event Trigger」が追加されます。
そのまま「Add New Event Type」ボタンを押します。
タブの中にあるトリガーイベントの「PointerClic」(今回はクリックでのトリガーとなるため)を選択します。
その後、オブジェクトと関数を登録します。
オブジェクト部分に「board_info_yu(ボード内の紙)」をドラッグして登録します。
「No Function(関数)」タブで「click」>「ClickEVENT」を選択して登録します。
作成したスクリプト「click」スクリプト内に記述した「ClickEVENT」関数を指定する形になっています。
イベントトリガー設定は以上になります。
コライダー(衝突判定)設定
オブジェクト「board_info_yu(ボード内の紙)」に「Physics 2D」コンポーネントを追加します。
オブジェクトに2D用のコライダー(衝突判定)を設定します。
オブジェクト「board_info_yu(ボード内の紙)」を選択し、インスペクターの「Add Component」ボタンを押します。
タブで「Physics 2D」>「Box Collider 2D」を選択します。
今回は「Box Collider 2D」を選択しましたが、指定オブジェクトの形によって任意のコライダーを選択可能です。
コライダー(衝突判定)設定は以上です。
テストプレイ
「Game(ゲーム画面のほう)」にて、オブジェクト「board_info_yu(ボード内の紙)」をクリックして動作を確認しましょう。
コメント