C# Android touch相同坐标错误(在Unity 4.5引擎上)
我在android设备的触摸处理方面遇到了一个非常严重的问题。 我正在Unity4.5中开发一款非常简单的跨平台手机游戏,只需两种输入:触摸上下滑动。 错误在于,在极少数情况下,我收到的两次触摸事件,相位开始和结束(/取消)具有完全相同的X和Y坐标,即使在一些相当大的滑动。我试着调试我的代码,在很多点上检查所有相关的值,似乎错误的数据直接来自触摸事件。 正如我所说的,坐标是相同的,相位和预期的一样(首先开始,最后结束),两个事件之间有60毫秒的间隔 事件发生前有一个可疑的错误。我倾向于怀疑它是我的bug的来源,但在任何论坛中搜索它都没有给我任何解决方案(主要回答是“忽略它”) 你能告诉我它是否是真正的来源(如果是的话,我能用它做些什么),或者你知道这是从哪里来的吗 多谢各位 可疑错误消息: 频道“4149ad80 com.[MyCompany].[MyApp]/com.unity3d.player.unityPlayerActiveActivity(客户端)”未能接收调度信号。状态=-11 我的触摸处理器的基本设置(C#):C# Android touch相同坐标错误(在Unity 4.5引擎上),c#,android,unity3d,C#,Android,Unity3d,我在android设备的触摸处理方面遇到了一个非常严重的问题。 我正在Unity4.5中开发一款非常简单的跨平台手机游戏,只需两种输入:触摸上下滑动。 错误在于,在极少数情况下,我收到的两次触摸事件,相位开始和结束(/取消)具有完全相同的X和Y坐标,即使在一些相当大的滑动。我试着调试我的代码,在很多点上检查所有相关的值,似乎错误的数据直接来自触摸事件。 正如我所说的,坐标是相同的,相位和预期的一样(首先开始,最后结束),两个事件之间有60毫秒的间隔 事件发生前有一个可疑的错误。我倾向于怀疑它是我
首先,
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;
}