Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android touch相同坐标错误(在Unity 4.5引擎上)_C#_Android_Unity3d - Fatal编程技术网

C# Android touch相同坐标错误(在Unity 4.5引擎上)

C# Android touch相同坐标错误(在Unity 4.5引擎上),c#,android,unity3d,C#,Android,Unity3d,我在android设备的触摸处理方面遇到了一个非常严重的问题。 我正在Unity4.5中开发一款非常简单的跨平台手机游戏,只需两种输入:触摸上下滑动。 错误在于,在极少数情况下,我收到的两次触摸事件,相位开始和结束(/取消)具有完全相同的X和Y坐标,即使在一些相当大的滑动。我试着调试我的代码,在很多点上检查所有相关的值,似乎错误的数据直接来自触摸事件。 正如我所说的,坐标是相同的,相位和预期的一样(首先开始,最后结束),两个事件之间有60毫秒的间隔 事件发生前有一个可疑的错误。我倾向于怀疑它是我

我在android设备的触摸处理方面遇到了一个非常严重的问题。 我正在Unity4.5中开发一款非常简单的跨平台手机游戏,只需两种输入:触摸上下滑动。 错误在于,在极少数情况下,我收到的两次触摸事件,相位开始和结束(/取消)具有完全相同的X和Y坐标,即使在一些相当大的滑动。我试着调试我的代码,在很多点上检查所有相关的值,似乎错误的数据直接来自触摸事件。 正如我所说的,坐标是相同的,相位和预期的一样(首先开始,最后结束),两个事件之间有60毫秒的间隔

事件发生前有一个可疑的错误。我倾向于怀疑它是我的bug的来源,但在任何论坛中搜索它都没有给我任何解决方案(主要回答是“忽略它”)

你能告诉我它是否是真正的来源(如果是的话,我能用它做些什么),或者你知道这是从哪里来的吗

多谢各位

可疑错误消息:

频道“4149ad80 com.[MyCompany].[MyApp]/com.unity3d.player.unityPlayerActiveActivity(客户端)”未能接收调度信号。状态=-11

我的触摸处理器的基本设置(C#):


首先,
Input.GetTouch(0.position)返回一个
Vector2
而不是
Vector3

我认为最好使用
Input.GetTouch(0).deltaPosition
获取刷卡距离

e、 g

if (Input.touchCount >= 1)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began && !touched)
            {
                firstTouch = Input.GetTouch(0).position;
                touched = true;
            }   
            else if (touched &&
                                    (Input.GetTouch(0).phase == TouchPhase.Ended
                                    || Input.GetTouch(0).phase == TouchPhase.Canceled))
            {
                Vector3 lastTouch = Input.GetTouch(0).position;
            }
                else if (lastTouch.y - firstTouch.y >= touchDeadZoneSize)
                {
                    Up();
                    touched = false;
                }
                else if (firstTouch.y - lastTouch.y >= touchDeadZoneSize)
                {
                    Down();
                    touched = false;
                }
if(Input.GetTouch(0).deltaPosition >= touchDeadZoneSize){
  Up();
  touched = false;
}else{
  Down();
  touched = false;
}