вращение эффекта Unity прикосновения и уменьшение масштаба модели

Во-первых, некоторые 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; 
            } 
        } 
    } 
}

  

 

рекомендация

отwww.cnblogs.com/v5-otto/p/11628767.html
рекомендация