Почему! EventSystem.current.IsPointerOverGameObject (touch.fingerId) больше не работает? - PullRequest
0 голосов
/ 15 января 2019

Приведенный ниже код работал для меня, когда я тестировал его несколько месяцев назад. Теперь я не вижу, как он работает. Хит всегда регистрируется за пользовательским интерфейсом, а модель, которую я поместил с помощью примера сцены UNITYARHIT, помещается за пользовательским интерфейсом. .

#else
        if (Input.touchCount > 0 && m_HitTransform != null)
        {
            var touch = Input.GetTouch(0);
            if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Moved && !EventSystem.current.IsPointerOverGameObject(touch.fingerId))
            {
                var screenPosition = Camera.main.ScreenToViewportPoint(touch.position);
                ARPoint point = new ARPoint {
                    x = screenPosition.x,
                    y = screenPosition.y
                };

                // prioritize reults types
                ARHitTestResultType[] resultTypes = {
                    ARHitTestResultType.ARHitTestResultTypeExistingPlaneUsingGeometry,
                    //ARHitTestResultType.ARHitTestResultTypeExistingPlaneUsingExtent, 
                    // if you want to use infinite planes use this:
                   // ARHitTestResultType.ARHitTestResultTypeExistingPlane,
                    ARHitTestResultType.ARHitTestResultTypeEstimatedHorizontalPlane, 
                    //ARHitTestResultType.ARHitTestResultTypeEstimatedVerticalPlane, 
                    //ARHitTestResultType.ARHitTestResultTypeFeaturePoint
                }; 

                foreach (ARHitTestResultType resultType in resultTypes)
                {
                    if (HitTestWithResultType (point, resultType))
                    {
                        return;
                    }
                }
            }
        }
        #endif

Нижеприведенный скрипт, который я добавил к модели, чтобы провести пальцем по вращению. При касании модель перемещается неловко. Она движется вдоль плоскости и вращается. Как только плоскость обнаружена, мне нужно отключить обнаружение плоскости, чтобы сделать вращение со смахиванием работает?

if(Input.touchCount==2  &&  Input.GetTouch(0).phase==TouchPhase.Moved)
    {
        // Get movement of the finger since last frame
        Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;


        transform.Rotate(Vector3.up ,touchDeltaPosition.x * rotspeed * Time.deltaTime, Space.World);
       // transform.Rotate(Vector3.right,touchDeltaPosition.y * rotspeed * Time.deltaTime,Space.World);


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...