Unity 2Dで配置した画像(Spriteなど)をクリックしたときに、イベントを発生させる方法について書いています。 想定される場面として、スマホでアイテムをタッチしたときに、取る処理をするような場合に使うかと思います。
今回は動物のイラストをクリックしたときにジャンプするようにしてみました。 下記の手順で、オブジェクトをクリックしたときにイベントを発生させることができるようになります。
今回作成したシーンものはGithubのこちらにアップしています。 [https://github.com/YasuakiHirano/PocUnity2D]
クリックしたときにイベントを発生させてみた
動物をクリック(タッチ)したときに、このようにジャンプさせるというだけのものをUnity 2Dで作ってみました!
<img src="https://gyazo.com/5cc9719fe46b329134dfa2f975a0c66e.gif” alt=”Unity 2Dでクリックしたらイベント発生サンプル” width=”600″ data-lity />
クリック(タッチ)したときに、イベントを発生させる手順を下記で解説しています。
オブジェクトのイベントを発生させる手順
クリック(タッチ)したときにイベントを発生させるようにするための手順を確認していきます。 クリックした時のイベントと関係ないため、手順に含めていませんが、クリックした時のジャンプ処理をするにはRigidbody 2Dの追加も必要です。
Main CameraにPhysics 2D Raycasterを設定
イベントを発生させたいシーンのMain Cameraに対して、Add Componentをクリックして「Physics 2D Raycaster」を追加します。
<img src="https://i.gyazo.com/cfe867bcbd89efe47819b0613f24b814.png” alt=”メインカメラにPhysics 2D Raycasterを設定する” width=”600″ data-lity />
Physics 2D Raycasterを設定することで、Colliderを設定しているオブジェクトに対して、クリックやタッチした際にイベントを発生させることができるようになります。
シーンにEventSystemを追加する
イベントを発生させたいシーンにEventSystemを追加します。 追加したいシーンを右クリックして、「GameObject => UI => EventSystem」で追加できます。
プロパティなどはデフォルトのままで大丈夫です。
オブジェクトに対して、スクリプトを設定する
クリックしてイベントが発生した時に、行いたい処理をするスクリプトをオブジェクトに対して設定します。 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);
}
}
OnClickZooをEvent Triggerで呼ぶようにします。
クリックすると、Rigidbody 2Dを使用してキャラクターがジャンプする仕組みです。
Rigidbody 2Dを使用してキャラクターがジャンプするという内容に関しては、下記の記事に書いています。 [https://codelikes.com/unity-2d-jump/]
オブジェクトに対して、Box Collider 2Dを設定する
オブジェクトに対して、Box Collider 2Dを設定しました。 Add Componentから検索して、このように追加します。
2D Collider系統のコンポーネントなら他のものでも大丈夫かと思います。
オブジェクトに対して、EventTriggerを設定する
オブジェクトにEventTriggerを設定しました。 Add Componentから検索して、このように追加します。
EventTriggerを追加した後は、Add New Event Typeボタンをクリックして、イベントを関連づけます。 今回はクリックした時なので、Pointer Clickを設定しました。
プラスボタンを押すと、イベントを関連づけるボックスが出て来ます。
下記のようにNoneの箇所に自分のオブジェクトをドラック&ドロップします。
No Functionのところをクリックすると、追加したスクリプトに定義したメソッドが出てくるので、設定します。
設定が終わると、こんな感じです。
これで設定完了です。 実際に実行するとイベントが動くことが確認できると思います。


コメント
反応しないです;;
コメントありがとうございます…
こちらにリポジトリを公開しているので、よかったら確認してみてください…🥺
https://github.com/YasuakiHirano/PocUnity2D