質問: touchPosition + oneSquareForward; } } ``` 参考画像:Player1スタート位置(青エリア中央) から青エリア右上隅へスワイプしたときのdistanceAfterSwipingの値: ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3eefee51ba7e4ff6b9f11c02a42e9fb5.png) distanceAfterSwipingの値を設定が上手くいかないのか、 それとも他が間違っているのか分かりませんでした。 アドバイスをお願いします。
回答: 現状の方針でいくなら、`Input.GetTouch(0).phase`でタッチの状況が取れます。 Input.GetTouch - Unity スクリプトリファレンス その後以下のような分岐をさせればいいかt。 * Began時:タッチとオブジェクトの距離測定。規定値以内なら移動可能フラグをオンにする。 * Move時:移動可能フラグがオンなら移動する。`Input.GetTouch(0).deltaPosition`で前フレームからのタッチ位置の差が取れるので、それをそのままプレイヤー位置に足せばいい。(つまり「指位置がX+0.1,Y-0.1したなら、プレイヤー位置もX+0.1,Y-0.1すれば、両者の距離は初期状態のまま維持される」) * EndedまたはCanceled時:移動可能フラグをオフにする。 で、「弾く」ような動作が無いなら、`IDragHandler`を利用した方が早いかもです。 【Unity】Spriteをドラッグで動かす【EventSystem】 - すとーぶろぐ (Playerの右側に透明なオブジェクトを用意、Playerの親オブジェクトにでもしておく。透明オブジェクト部分にIDragHandlerを適用させれば、余計な距離計算も必要無い)