Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Unity3d touch.phase==TouchPhase.Cancelled未工作_Unity3d_Unityscript - Fatal编程技术网

Unity3d touch.phase==TouchPhase.Cancelled未工作

Unity3d touch.phase==TouchPhase.Cancelled未工作,unity3d,unityscript,Unity3d,Unityscript,我厌倦了处理和解决与多点触摸相关的问题。我最多同时使用5次触碰,但当两次触碰两个对象并移动手指时,两次触碰都触发了TouchPhase.Ended事件,但未触发TouchPhase.Cancelled 我想在手指离开这些物体时触发TouchPhase.cancelled if (touch.phase == TouchPhase.Began) { hitObject.GetComponent ().TouchDown (hitObject); } if (touch.phase ==

我厌倦了处理和解决与多点触摸相关的问题。我最多同时使用5次触碰,但当两次触碰两个对象并移动手指时,两次触碰都触发了
TouchPhase.Ended
事件,但未触发
TouchPhase.Cancelled

我想在手指离开这些物体时触发
TouchPhase.cancelled

if (touch.phase == TouchPhase.Began) { 
   hitObject.GetComponent ().TouchDown (hitObject); 
}

if (touch.phase == TouchPhase.Ended) { 
   hitObject.GetComponent ().TouchExit (hitObject); 
}

if (touch.phase == TouchPhase.Moved || touch.phase == TouchPhase.Stationary) { 
   hitObject.GetComponent ().TouchStay (hitObject); 
}

if (touch.phase == TouchPhase.Canceled) { 
   print ("Touched canceled...."); 
   hitObject.GetComponent ().TouchExit (hitObject); 
}

如果我理解正确的话


看,我的屏幕上有一个物体。我用光线投射来检测那个物体。在hitObject中,我存储了那个HitDebject,当我的fingure在那个物体上着陆时,它就工作了。如果我从同样有效的命中对象修补我的fingure。当我的fingure停留在该对象上或我将fingure移动到同样有效的命中对象上时。但在移动我的fingure时,如果在那个时候它是移动到该对象之外,则应触发TouchPhase.Cancelled事件。但这是行不通的。这是我的问题。我怎样才能解决它

我想停止在命中对象上拖动/交换手指(不移动),我该怎么办

您必须根据触摸位置限制刷卡

var realWorldPos = Camera.main.ScreenToWorldPoint(touch.position);

if(realWorldPos.x < maximumXSwipePosition && realWorldPos.x > minimumXSwipePosition)
{
    //do the stuff you want to do
}
//otherwise, don't do it.
var realWorldPos=Camera.main.ScreenToWorldPoint(touch.position);
if(realWorldPos.x<最大XSwipePosition&&realWorldPos.x>最小XSwipePosition)
{
//做你想做的事
}
//否则,不要这样做。

“结束”表示用户抬起手指,这是您应该处理的常规事件。“取消”意味着触摸被强行中断(收到短信,手势识别器处理触摸),很少被发送。但我习惯了。在我的屏幕上,当我触摸到一个对象时,当我拖动我的fingure到被检测对象的外侧时,它被检测到,此时我想要处理该事件。我该怎么做?让我澄清一下,首先你触摸一个物体。然后你拖动你的手指直到它不再接触那个物体。当手指拖动退出对象时,您希望处理一个事件。我说得对吗?看,我的屏幕上有一个物体。我用光线投射来检测那个物体。在hitObject中,我存储了那个HitDebject,当我的fingure着陆到那个物体上时,它就工作了。如果我从同样有效的命中对象修补我的fingure。当我的fingure停留在该对象上或我将fingure移动到同样有效的命中对象上时。但在移动我的fingure时,如果在那个时候它是移动到该对象之外,则应触发TouchPhase.Cancelled事件。但这是行不通的。这是我的问题。我怎么才能解决呢?这不是TouchPhase.Cancelled的功能。触摸阶段是指用户的手指实际触摸屏幕,它不知道您的对象是什么,也不知道您的用户是否正在触摸对象。