Unity 2Dでオブジェクトをクリックしたときにイベントを発生させる方法!

Unity 2D オブジェクトをクリックしたときにイベントを発生させる Unity

Unity 2Dで配置した画像(Spriteなど)をクリックしたときに、イベントを発生させる方法について書いています。
想定される場面として、スマホでアイテムをタッチしたときに、取る処理をするような場合に使うかと思います。

今回は動物のイラストをクリックしたときにジャンプするようにしてみました。
下記の手順で、オブジェクトをクリックしたときにイベントを発生させることができるようになります。

1. Main CameraにPhysics 2D Raycasterを設定する
2. シーンにEventSystemを追加する
3. オブジェクトに対して、スクリプトを設定する
4. オブジェクトに対して、Box Collider 2Dを設定する
5. オブジェクトに対して、EventTriggerを設定する
今回作成したシーンものはGithubのこちらにアップしています。
GitHub - YasuakiHirano/PocUnity2D
Contribute to YasuakiHirano/PocUnity2D development by creating an account on GitHub.

クリックしたときにイベントを発生させてみた

動物をクリック(タッチ)したときに、このようにジャンプさせるというだけのものをUnity 2Dで作ってみました!

Unity 2Dでクリックしたらイベント発生サンプル

クリック(タッチ)したときに、イベントを発生させる手順を下記で解説しています。

オブジェクトのイベントを発生させる手順

クリック(タッチ)したときにイベントを発生させるようにするための手順を確認していきます。
クリックした時のイベントと関係ないため、手順に含めていませんが、クリックした時のジャンプ処理をするにはRigidbody 2Dの追加も必要です。

Main CameraにPhysics 2D Raycasterを設定

イベントを発生させたいシーンのMain Cameraに対して、Add Componentをクリックして「Physics 2D Raycaster」を追加します。

メインカメラにPhysics 2D Raycasterを設定する

Physics 2D Raycasterを設定することで、Colliderを設定しているオブジェクトに対して、クリックやタッチした際にイベントを発生させることができるようになります。

シーンにEventSystemを追加する

イベントを発生させたいシーンにEventSystemを追加します。
追加したいシーンを右クリックして、「GameObject => UI => EventSystem」で追加できます。

EventSystemをUnityに追加

プロパティなどはデフォルトのままで大丈夫です。

オブジェクトに対して、スクリプトを設定する

クリックしてイベントが発生した時に、行いたい処理をするスクリプトをオブジェクトに対して設定します。
Add ComponentからNew Scriptでスクリプトを追加します。

オブジェクトにスクリプトを追加

今回作成したスクリプトは下記です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TouchZoo : MonoBehaviour
{
    private Rigidbody2D rbody2D;

    private float jumpForce = 350f;

    private int jumpCount = 0;

    void Start()
    {
        rbody2D = GetComponent<Rigidbody2D>();
    }

    public void OnClickZoo()
    {
        this.rbody2D.AddForce(transform.up * jumpForce);
    }
}

OnClickZooEvent Triggerで呼ぶようにします。
クリックすると、Rigidbody 2Dを使用してキャラクターがジャンプする仕組みです。

オブジェクトに対して、Box Collider 2Dを設定する

オブジェクトに対して、Box Collider 2Dを設定しました。
Add Componentから検索して、このように追加します。

オブジェクトにColliderを追加

2D Collider系統のコンポーネントなら他のものでも大丈夫かと思います。

オブジェクトに対して、EventTriggerを設定する

オブジェクトにEventTriggerを設定しました。
Add Componentから検索して、このように追加します。

オブジェクトにEventTriggerを追加

EventTriggerを追加した後は、Add New Event Typeボタンをクリックして、イベントを関連づけます。
今回はクリックした時なので、Pointer Clickを設定しました。

プラスボタンを押すと、イベントを関連づけるボックスが出て来ます。
下記のようにNoneの箇所に自分のオブジェクトをドラック&ドロップします。

オブジェクトをEventTriggerに紐付ける

No Functionのところをクリックすると、追加したスクリプトに定義したメソッドが出てくるので、設定します。
設定が終わると、こんな感じです。

オブジェクトをEventTrigger設定完了

これで設定完了です。
実際に実行するとイベントが動くことが確認できると思います。

コメント

  1. a より:

    反応しないです;;

タイトルとURLをコピーしました