回答編集履歴

1 追記

IShix

IShix score 1570

2018/01/23 01:38  投稿

Input.GetMouseButton(0)はスマホでも動きます。書くならこんな感じです。
Input.GetMouseButton(0)はスマホでも動くのでそのままでも大丈夫です。
書くならこんな感じです。
※コードは未検証です。
```C#
//画面から指が離れたとき(Ended) メソッド実行
this.UpdateAsObservable()
 .Where(_ => Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
 .Subscribe(_ => Hoge());
```
タッチ位置を取得したいならこんな感じです。
```C#
this.UpdateAsObservable()
 .Where(_ => Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
 .Select(_ => Input.GetTouch(0))
 .Subscribe(t => Debug.Log(t.deltaPosition));
```
###最後に
今回のメソッドが重要な処理なら「ユーザーの意思」について考えてみると良いと思います。例えば、**考えるために画面上をなぞっても**メソッドが走りますし、**持っている手で触れても**メソッドが走ります。今回の処理はそれをユーザーが良しとする処理でしょうか?
「ユーザーの意思」を考慮するポイントを今思いつく限り書いてみます。
・ドラッグはタップと認めない
・タッチスタートからタッチエンドまでの速度が00秒以上はタップと認めない
・複数本指でのタッチはタップと認めない
・特定範囲以外のタッチはタップと認めない
などでしょうか。と言っても実装するのは結構大変なのでUnityのイベントを活用するのも良いかと思います。もし「ユーザーの意思」を考えなければいけない処理でしたら検討してみてください。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る