Во-первых, некоторые Input.touches структура, которая представляет собой сенсорный массив, каждая запись представляет состояние пальца на сенсорном экране. Каждый палец прикосновения через Input.touches описать:
fingerId |
Единственный показатель прикоснулся |
позиция |
Положение сенсорного экрана |
участие час |
От конечного состояния к текущему состоянию истекшего времени |
tapCount |
Удар. Нажмите на Andorid устройство не считается, этот метод всегда возвращает 1 |
позиция дельты |
Переход от последней позиции экрана |
фаза |
Фаза, то есть рабочее состояние экрана |
Какая фаза (состояние) Есть такие типы:
Начал |
Просто палец касается экрана |
Перевезу |
Переместите палец на экране |
стационарный |
Палец касается экрана, но не сдвинулся на некоторое время с момента последнего |
Закончилось |
Ваш палец от экрана |
отменен |
Система отслеживания деактивирует контакт, причину такого оборудования на лице или более пяти точек касания одновременно
|
Единство в игре выполняется левой кнопкой мыши действие кнопки может быть заменен с сенсорным экраном на телефоне, но не может заменить контакт с несколькими точками. (То есть по телефону, когда вы звоните getaxis и методы getmousebutton, такие как сенсорные экраны могут также реагировать)
Ниже достигается поворот и код масштабирования при работе на телефоне
используя System.Collections; используя System.Collections.Generic; используя UnityEngine; Класс игрок общественности: MonoBehaviour { общественного поплавок rotateSpeed; общественный Vector2 nTouchPos1; общественный Vector2 nTouchPos2; общественный Vector2 oTouchPos1; общественный Vector2 oTouchPos2; // Обновление вызывается один раз за кадр пустот Update () { //旋转 , если (Input.GetMouseButton (0)) { если (Input.touchCount == 1) { если (Input.GetTouch (0) .phase == TouchPhase. Переехал) { debug.log ( "开始旋转"); плавать Movex = Input.GetTouch (0) .deltaPosition.x; Debug.log ( "滑动的距离" + Movex); transform.Rotate (Vector3.up * -rotateSpeed * MOVEX * Time.deltaTime); } } } ZoomInOut (); если (this.transform.position.y> 0) { возвращение; } This.transform.Translate (новый Vector3 (0, 0.5f, 0) * Time.deltaTime); } BOOL IsEnLarge (Vector2 nPos1, Vector2 nPos2, Vector2 oPos1, Vector2 oPos2) { плавать NDIS = Vector2.Distance (nPos1, nPos2); плавать ODIs = Vector2.Distance (oPos1, oPos2); если (NDIS <ODIs) { вернуться ложным; } Еще { возвращает истину; } } Пустота ZoomInOut () { если (Input.touchCount == 2) { если (Input.GetTouch (0) .phase == TouchPhase.Moved || Input.GetTouch (1) .phase == TouchPhase.Moved) { nTouchPos1 = Input.GetTouch (0) .position; nTouchPos2 = Input.GetTouch (1) .position; если (IsEnLarge (nTouchPos1, nTouchPos2, oTouchPos1, oTouchPos2)) { Vector3 nScale = transform.localScale * 1.01f; transform.localScale = новый Vector3 (nScale.x, nScale.y, nScale.z); } Иначе { Vector3 nScale = transform.localScale * 0.99f; transform.localScale = новый Vector3 (nScale.x, nScale.y, nScale.z); } OTouchPos1 = nTouchPos1; oTouchPos2 = nTouchPos2; } } } }