touch.fingerid 触摸不起作用

touch.fingerid touch not working

下面是我的鼠标外观脚本,它控制触摸和移动,现在我正在实现多点触摸,为此,我使用了 finger-ID,但是在实现之后,我的触摸不起作用,不知道为什么.默认情况下 slider_finger_id 是 =-1;

 if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) 
    {
        if( Input.touchCount>0 )
        {
            foreach (Touch touch in Input.touches)
            {
                if (touch_moving_tex.HitTest (touch.position))
                    {
                    if(touch.phase == TouchPhase.Began &&  touch.phase == TouchPhase.Moved && slider_finger_id ==-1) 
                        {
                        if (axes == RotationAxes.MouseXAndY) 
                        {
                            sensitivityX = main_fov; 
                            noisedeltaX += ((((Mathf.Cos (Time.time) * Random.Range (-10, 10) / 5f) * noiseX) - noisedeltaX) / 100) * Time.timeScale;
                            rotationXtemp += (touch.deltaPosition.x * sensitivityX * sensitivity) + (noisedeltaX);

                            //rotationXtemp += (Input.GetTouch (0).deltaPosition.x * sensitivityX * sensitivity) + (noisedeltaX);

                            rotationX += ((rotationXtemp - rotationX) / 3) * Time.timeScale;
                            rotationX = Mathf.Clamp (rotationX, minimumX, maximumX);

                            sensitivityY = main_fov;
                            noisedeltaY += ((((Mathf.Sin (Time.time) * Random.Range (-10, 10) / 5f) * noiseY) - noisedeltaY) / 100) * Time.timeScale;

                            rotationYtemp += (touch.deltaPosition.y * sensitivityY * sensitivity) + (noisedeltaY);
                            rotationY += ((rotationYtemp - rotationY) / 3) * Time.timeScale;

                            rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
                            transform.rotation = Quaternion.Lerp (transform.rotation, Quaternion.Euler (new Vector3 (-rotationY, rotationX, 0)), 9f * Time.deltaTime);

                        }
                    }
                    slider_finger_id = touch.fingerId;
                    }
                if (touch.phase == TouchPhase.Ended) 
                {
                    if (touch.fingerId == slider_finger_id) 
                    {
                        slider_finger_id = -1;
                    }
                }
            }
        }

实际上,我没有得到 touch.fingerId,也没有存储,也没有检查特定的 touch.fingerId,所以我通过这样做弄明白了。下面是脚本并且表现良好。 (我在下面的代码中做的主要事情是,触摸仅适用于第一次触摸,通过保存 touch.fingerId 由 fingerId 完成) 首先我只是检查触摸计数是否大于零,然后获取触摸数组并执行 foreach 循环,然后检查触摸是否在我想要的位置,然后获取第一个触摸 fingerId,并将其保存在 slider_finger_id 中然后使用它。

if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) 
{
    if( Input.touchCount>0 )
    {
        foreach (Touch touch in Input.touches)
        {
            if (touch_moving_tex.HitTest (touch.position))
                {
                if(touch.phase == TouchPhase.Began && slider_finger_id == -1) 
                    {
                     slider_finger_id = touch.fingerId;
                    }

                    if(touch.phase == TouchPhase.Moved)
                     {
                    if (axes == RotationAxes.MouseXAndY) 
                    {
                        sensitivityX = main_fov; 
                        noisedeltaX += ((((Mathf.Cos (Time.time) * Random.Range (-10, 10) / 5f) * noiseX) - noisedeltaX) / 100) * Time.timeScale;
                        rotationXtemp += (touch.deltaPosition.x * sensitivityX * sensitivity) + (noisedeltaX);

                        //rotationXtemp += (Input.GetTouch (0).deltaPosition.x * sensitivityX * sensitivity) + (noisedeltaX);

                        rotationX += ((rotationXtemp - rotationX) / 3) * Time.timeScale;
                        rotationX = Mathf.Clamp (rotationX, minimumX, maximumX);

                        sensitivityY = main_fov;
                        noisedeltaY += ((((Mathf.Sin (Time.time) * Random.Range (-10, 10) / 5f) * noiseY) - noisedeltaY) / 100) * Time.timeScale;

                        rotationYtemp += (touch.deltaPosition.y * sensitivityY * sensitivity) + (noisedeltaY);
                        rotationY += ((rotationYtemp - rotationY) / 3) * Time.timeScale;

                        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
                        transform.rotation = Quaternion.Lerp (transform.rotation, Quaternion.Euler (new Vector3 (-rotationY, rotationX, 0)), 9f * Time.deltaTime);

                    }
                  }
                }
                slider_finger_id = touch.fingerId;
                }
            if (touch.phase == TouchPhase.Ended && slider_finger_id == touch.fingerId) 
            {
                    slider_finger_id = -1;
            }
        }
    }