tanaka's Programming Memo

プログラミングについてのメモ。

UnityでAndroidのタッチ操作

  • Input.touchCountで、現在、同時にタッチされている数を返す。SH-12Cでは5箇所まで同時に検出可能。
  • Input.GetTouch(index)で、0〜Input.touchCount-1までの押された場所のデータを、Touchクラスのインスタンスで返す。
// 0番目のタッチのデータをtchに取得する
Touch tch = Input.GetTouch(0);
  • 押された座標は、tch.positionで参照できる。
  • GUITextureのHitTest(座標)に座標を渡すと、特定のGUITextureをタッチしているかがわかる。
  • tch.fingerIdには、押され続けている間は同じIdが入る。これを使って、複数の場所で移動が発生した時のそれぞれの移動を判別可能。
  • tch.deltaPositionで、前回からの移動量が取れる。
  • tch.deltaTimeで前回変更されてからの経過時間が取れる。
  • tch.tapCountで、連打したときの数が取れるらしい。が、Androidでは未対応らしい。デバッグ実行時にはリセットされるまでの時間がかなりかかるので、ダブルタッチなどの検出には使わない方がよさそう。
  • tch.phaseに、TouchPhase型の5種類の状態が返る。
    • TouchPhase.Began:タッチ開始。
    • TouchPhase.Moved:移動した。
    • TouchPhase.Stationary:タッチはしているが移動はしていない。
    • TouchPhase.Ended:タッチが終わった。
    • TouchPhase.Canceled:システム的にタッチをキャンセル。Ended同様、タッチの終了を表す。