まだまだだらだらとスワイプで悩む(´・ω・`)
2本指スワイプでカメラを並行移動する処理を実装する(スマホ向け)のエントリで紹介されているコードを試す。今自分が欲しいのは、このパターンの拡張したものかなぁと思い始める。
そう言えば、
if (Input.touchCount >= 2) { subscript = 1; } else { subscript = 0; } if(Input.touchCount >= 1) { Debug.Log("touchCount: " + Input.touchCount); if (Input.GetTouch(subscript).phase == TouchPhase.Began) { beforePoint[0] = Input.GetTouch(0).position; beforePoint[1] = Input.GetTouch(subscript).position; }
みたいな感じにしておかないとInput.GetTouch(1)でエラーになった。
コードの書き方が変なのは気にしない(・3・) C# newbie
つーか自分で使うのは2本指でのスワイプは必要ないから、二点目の格納部分をごっそり削ってもいいのかもしれない。
これをMathf.Clampで制限して、あと移動速度を変えようか…
でもこれだとEditorでテスト出来ないから、
UnityでiOS/Android/Editorの共通タッチ処理を実装するかその改変版の「UnityでiOS/Android/Editorの共通タッチ処理を実装する」にdeltaを取れるように追加してみたで紹介されているようなコードにしてみるべきか。前者の方はAssetになっている模様だけど、触ってない(ノ∀`)
他にも、【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする というエントリで紹介されているコードを試してみた。これも無事に動くことを確認した。(まぁ以下のように適当に書いたscriptファイルを追加して、その中のOnSwipeメソッド内で引数をDebug.Logさせただけだけどw)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class testOnswipe : MonoBehaviour { public void Onswipe(Vector2 swipeDir) { if(swipeDir == Vector2.up) { Debug.Log("swipeDir: up" + swipeDir); } if (swipeDir == Vector2.right) { Debug.Log("swipeDir: right" + swipeDir); } if (swipeDir == Vector2.left) { Debug.Log("swipeDir: left" + swipeDir); } if (swipeDir == Vector2.down) { Debug.Log("swipeDir: down" + swipeDir); } } }
このコードはUnityEventとかc#のdelegateとか色々と新しい概念が絡んで来て、理解するのに苦労した(ヽ'ω`) このエントリ内でもリンクされていた、【Unity】【C#】UnityEvent, Action, delegate, interface でのコールバック実装方法とインスペクタでの登録 やら他のサイトを眺めたりして何となく納得する(´・ω・`)リカイハシテナイ
これはこれで勉強にはなったが、やはり最初の方の路線で行こうかな。つーか別に今一番大事なところではなかったな、スワイプスクロール(ノ∀`)w