うにのトゲは刺さると痛い(´・ω・`)-2

まだまだだらだらとスワイプで悩む(´・ω・`)

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