View Online: Version: Latest written by @sator-imaging on
Touch Gesture Recognition for Unity - YouTube
using SatorImaging.UnityTouchRecognizer;
する。
TouchRecognizer に初めてアクセスしたときに初期化されるが、必要に応じて TouchRecognizer.Initialize()
で明示的にイニシャライズする。
MonoBehaviour の Update() 内などで、TouchRecognizer.Update()
を毎フレーム呼ぶ。
※ 今時点で
.Update()
は、同一フレーム内で何回呼ばれても一度しか更新しない。という処理はしていないので、複数の場所で.Update()
しない。
時間の閾値のみでタップ距離の閾値は無し。.Get***()
で距離や角度の閾値を指定出来るので必要であれば。
TouchRecognizer.tapCountTimeThreshold
TouchRecognizer.tapCountIntervalTimeThreshold
TouchRecognizer.IsTapped
TouchRecognizer.TapCount
TouchRecognizer.TapFingerCount
TouchRecognizer.FingerCount
TouchRecognizer.IsFingerCountChanged
TouchRecognizer.IsFingerCountIncreased
TouchRecognizer.IsFingerCountDecreased
タッチしていないときは TouchRecognizer.nullTouch
が返ってくる。0 > Touch.fingerId
なら nullTouch。
TouchRecognizer.FirstFinger
.SecondFinger
は存在して .FirstFinger
は .nullTouch
の場合アリ。TouchRecognizer.SecondFinger
TouchRecognizer.TouchDuration
TouchRecognizer.LatestTouchDuration
ジェスチャー系のパラメーターはフリック判定で使ったりするので、.Update()
するまでは直前の値を保持し続ける。
.Get***()
で Threshold を指定した場合は閾値を超えた分が返ってくる。
–
タッチしている指が2本の場合に .SwipeVector
他、1本指のジェスチャーを取ると float.NaN
か Vector2(float.NaN, float.NaN)
か int.MinValue
が返ってくる。
なので、基本は .FingerCount
で処理を分ける。
TouchRecognizer.SwipeVector
TouchRecognizer.SwipeDeltaVector
TouchRecognizer.GetSwipeVector(float distanceThreshold)
TouchRecognizer.GetSwipeDeltaVector(float distanceThreshold)
フリックした後、カメラがスーーーっと止まる、をやろうとすると、ベクトルの減衰処理が必要だったりなので、機能を追加予定。
今時点でのフリック判定は、指数が減ったフレーム(.IsFingerCountDecreased
)で、.FingerCount
が望みの数の時に .SwipeDeltaVector
等の .magnitude
が閾値を超えていたら .SwipeVector
か .SwipeDeltaVector
を使って良い感じにする、で出来る(ハズ
TouchRecognizer.PinchLength
TouchRecognizer.PinchDeltaLength
TouchRecognizer.GetPinchLength(float lengthThreshold)
TouchRecognizer.GetPinchDeltaLength(float lengthThreshold)
TouchRecognizer.PinchAngle
TouchRecognizer.PinchDeltaAngle
TouchRecognizer.GetPinchAngle(float angleThresholdInDegrees)
TouchRecognizer.GetPinchDeltaAngle(float angleThresholdInDegrees)
TouchRecognizer.PinchVector
TouchRecognizer.PinchDeltaVector
TouchRecognizer.GetPinchVector(float distanceThreshold)
TouchRecognizer.GetPinchDeltaVector(float distanceThreshold)