まだまだだらだらとスワイプで悩む(´・ω・`)
2本指スワイプでカメラを並行移動する処理を実装する(スマホ向け)のエントリで紹介されているコードを試す。今自分が欲しいのは、このパターンの拡張したものかなぁと思い始める。
そう言えば、
if (Input.touchCount >= 2) { subscript = 1; } else { subscript = 0; } <pre><code> if(Input.touchCount &gt;= 1) { Debug.Log(&quot;touchCount: &quot; + 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) { <pre><code> if(swipeDir == Vector2.up) { Debug.Log(&quot;swipeDir: up&quot; + swipeDir); } if (swipeDir == Vector2.right) { Debug.Log(&quot;swipeDir: right&quot; + swipeDir); } if (swipeDir == Vector2.left) { Debug.Log(&quot;swipeDir: left&quot; + swipeDir); } if (swipeDir == Vector2.down) { Debug.Log(&quot;swipeDir: down&quot; + swipeDir); } } </code></pre> }
このコードはUnityEventとかc#のdelegateとか色々と新しい概念が絡んで来て、理解するのに苦労した(ヽ'ω`) このエントリ内でもリンクされていた、【Unity】【C#】UnityEvent, Action, delegate, interface でのコールバック実装方法とインスペクタでの登録 やら他のサイトを眺めたりして何となく納得する(´・ω・`)リカイハシテナイ
これはこれで勉強にはなったが、やはり最初の方の路線で行こうかな。つーか別に今一番大事なところではなかったな、スワイプスクロール(ノ∀`)w