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;
}
}
}
下面是我的鼠标外观脚本,它控制触摸和移动,现在我正在实现多点触摸,为此,我使用了 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;
}
}
}