Samsung Devices上的Unity Touch灵敏度问题

时间:2016-09-15 09:28:49

标签: c# android unity3d unity5 samsung-mobile

我们正在开发一款基于触控的Android应用程序,用于Unity3D和C#,可根据触摸颜色部分覆盖Flood Fill。

问题是,虽然在大多数设备上触摸工作都很顺利,但在特别是三星Note 5和S6上,只需轻点几下即可注册单个触控。为了扩大这种混淆,当我们在这些设备上尝试其他类似的应用程序时,它们完全没有问题。

这是我们用于触摸的代码。它基本上是一个点击屏幕的简单光线投射。我们尝试使用mousePosition和GetTouch。

if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.GetTouch(0).position), out hit, Mathf.Infinity)) {

        Renderer rend = hit.transform.GetComponent<Renderer> ();
        MeshCollider meshcol = hit.collider as MeshCollider;


        myImage = Instantiate (rend.material.GetTexture ("_MainTex")) as Texture2D;
        Vector3 texCoord = hit.textureCoord;
        float scaleX = rend.material.GetTextureScale ("_MainTex").x;
        float scaleY = rend.material.GetTextureScale ("_MainTex").y;
        float deg = rend.material.GetFloat ("_RotationDegrees");
        deg *= Mathf.Rad2Deg;
        texCoord.x = (((texCoord.x * scaleX + rend.material.GetTextureOffset ("_MainTex").x)));
        texCoord.y = (((texCoord.y * scaleY + rend.material.GetTextureOffset ("_MainTex").y)));
        #region ROTATION
        float s = Mathf.Sin ((deg * Mathf.PI) / 180);
        float c = Mathf.Cos ((deg * Mathf.PI) / 180);
        Vector2 temp = new Vector2 (texCoord.x, texCoord.y);
        temp.x -= 0.5f;
        temp.y -= 0.5f;
        float xnew = temp.x * c + temp.y * s;
        float ynew = -temp.x * s + temp.y * c;
        temp.x = xnew + 0.5f;
        temp.y = ynew + 0.5f;
        texCoord.x = temp.x;
        texCoord.y = temp.y;
        #endregion
        texCoord.x *= myImage.width;
        texCoord.y *= myImage.height;


        FloodFiller.RevisedQueueFloodFill (myImage, (int)texCoord.x, (int)texCoord.y, GameplayConstants.currentColor, false);
        //  penSprite.GetComponent<Animation> ().Play ();
        rend.material.mainTexture = myImage;
    }

我们甚至使用了一个检测DPI的脚本并动态更改Unity UI灵敏度,但这也无济于事。事实上,我们的其他设备具有相似的DPI级别。

感谢任何帮助!

0 个答案:

没有答案