AK2Sのプログラム日記

フリーランスプログラマのプログラムに関する日記です

【Unity】Editor&スマホ端末のマウスとタッチを共通で処理する

こんばんは、AK2Sです!

タップエフェクト*1を実装した時にEditorとスマホ端末で入力位置を検出する際、UnityEditorだとマウススマホ端末だとタッチで検出しないといけません。

 

マウスに関しては必ず1点ですが、タッチは数点ありますので他の人はどんな感じに入力をまとめてるのかなーとか思ってネットで調べてたら、だいたいタッチは1番目のタッチしか使ってないんですよねぇ(実装したいタップエフェクトは指2本以上使う可能性がある…!

Input::touches::fingerIdでタップした指が何番目の指なのか情報を保持しているのでそちらを使って対応してみました!

 

ちょっとスクリプトが長いのでURLだけ貼り付けておきます(ヽ´ω`)

InputPointer.cs

github.com

 

使い方はこちら↓

まずStart関数でInputPointerをInitializeしてあげます、そうするとInputPointerのインスタンスが生成されますので、そちらでマウスとタッチ両方のイベントの管理を行っています。

(Initializeの引数が記載されていませんがデフォルト引数で2個まで管理出来るようになってます!

 

次にUpdate関数で管理しているInputPointer::Pointerのインスタンスを取得して、管理しているPointerの現在の状態が取得出来るようになっています!

サンプルのスクリプトの挙動としては、画面をクリックorタッチするとパーティクルが発生してそのまま指を離さない場合は、クリック位置orタッチ位置に追従するようにパーティクルが発生します(*´ω`*)

 

管理するPointerの数はドラッグのパーティクルと数を合わせているので、そのままfingerIdと連動させているという感じです!

 

それでは今回はここまで!

何かご質問やご指摘があればご連絡ください(∩´∀`)∩

 

 

 

*1:画面をタッチした時に表示されるエフェクト