見出し画像

ダンスするゲームを作りたい#2 タッチイベントを受け取る

今回作りたい機能は、指の上下運動に合わせてキャラも上下運動する機能です。

タッチ入力を受け取る

指の上下を検出したいので、検出できるようにしていきます。

Unityでは、UnityEngine.EventSystems がタッチイベントを検出して、どこ触ったとかそういう情報をTouchオブジェクトとして教えてくれます。

指で触ると Input.touchCount に触った本数が入ります。
これが1以上なら触ってるってことですね。

触ってる状態だったらタッチイベントを取得します。
Input.GetTouch(数字) で Touch を返してくれます。
数字のとこは配列を参照するノリで1本目は0、2本目は1って感じです。

Touchオブジェクトはpositionで触ってるとこのXY座標を、fingerIDで指のIDを返してくれます。IDは基本触った順番に012...ってつけられます。

ついでに、今回は画面端の特定のエリアを触ったときに検出したいので、パネルを置いてそこから始まるかを判定します。

※とは言ったものの、今回の手法は全uGUIの上かどうかを識別する方法であって、パネルだけを識別できてはいません。
後々要修正ですが、今はさほど重要ではないのでぶっ飛ばします。

というわけで、タッチを取得するスクリプトは

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class TapEffect : MonoBehaviour
{
   void Update()
   {
       if (Input.touchCount > 0) {
           for(int i=0;i<Input.touchCount;i++){
               Touch touch=Input.GetTouch(i);
               if(EventSystem.current.IsPointerOverGameObject(touch.fingerId)){
                   Debug.Log(touch.fingerId); //指ID
                   Debug.Log(touch.position); //触ってる場所
               }
           }
       }
   }
}

こんな感じ。Usingがやたら多いのは都度都度足してるせいでもうどれが使うやつかわからんので全部入れちゃった。ごめんさい。

これで、UIの上をタッチした指の座標がわかる。

※さっきも言ったけどこれだとuGUI上なら全部が対象。
しかも、最初がuGUI上だったら、離さず移動してエリアから外れても座標は取り続けられるっぽい。要修正だが先に進む。

何か想像以上に長くなっちゃったので続きはまた次回にします。

次回はモデル作って座標を反映させたいけどできなかったっていう話です。

ではまた。

この記事が気に入ったらサポートをしてみませんか?