Архив метки: Unity



Unity: Урок Touch Input for Mobile Scripting — Multi-touch Information Display

Данный урок был разбит на три части и мы уже рассмотрели азы в первом уроке и применили часть знаний во втором уроке.
В этом уроке будет рассмотрен способ отслеживания касания сразу нескольких пальцев к экрану устройства. В этом примере будет рассмотрен более детально класс Touch (хотя в документации сказано, что это структура, а не класс, но ладно).

Можно переделать старую сцену из прошлого урока, а можно сохранить её как новую.

 

1. Переименуем объект DPadTester на MultiTouch (Это можно сделать клавишей F2 или просто щёлкнув на нём мышкой).
2. Как и в предыдущем уроке, удалим компонент Virtual D Pad:

3. Вместо него создадим новый скрипт MultiTouchDisplay.cs:

using UnityEngine;
using UnityEngine.UI;

public class MultiTouchDisplay : MonoBehaviour
{
  public Text multiTouchInfoDisplay;
  private int maxTapCount = 0;
  private string multiTouchInfo;
  private Touch theTouch;

  // Update is called once per frame
  void Update()
  {
    multiTouchInfo = string.Format("Max tap count: {0}\n", maxTapCount);

    if (Input.touchCount > 0)
    {
      for (int i = 0; i < Input.touchCount; i++)
      {
        theTouch = Input.GetTouch(i);

        multiTouchInfo += string.Format("Touch {0} - Position {1} - Tap Count: {2} - Finger ID: {3}\nRadius: {4} ({5}%)\n",
        i, theTouch.position, theTouch.tapCount, theTouch.fingerId, theTouch.radius,
        ((theTouch.radius / (theTouch.radius + theTouch.radiusVariance)) * 100f).ToString("F1"));

      if (theTouch.tapCount > maxTapCount)
      {
        maxTapCount = theTouch.tapCount;
      }
    }
  }

  multiTouchInfoDisplay.text = multiTouchInfo;
  }
}

4. Перетащим InfoDisplayText в соответствующее поле нашего скрипта:

5. При сборке проекта (Build Settings) не забудьте указать текущую сцену для компиляции, после чего нажмите Build and Run:

В результате, после запуска можно увидеть статус по всем пяти пальцам (индексация начинается с 0, поэтому пятый палец под ID 4):