如何使用FingerGestures插件处理捏合手势?

时间:2015-08-04 08:54:34

标签: unity3d

当我用两根手指移动时捏住屏幕时,它工作正常,但是当一根手指触摸但没有移动而另一根手指移动时,捏回调没有调用。 当我不动两根手指时,我怎么能让它工作?

1 个答案:

答案 0 :(得分:0)

有趣的问题,我在PinchRecognizer.cs中阅读了FingerGestures源代码,我发现了这些代码。

 protected override bool CanBegin( PinchGesture gesture, FingerGestures.IFingerList touches )
{
    if( !base.CanBegin( gesture, touches ) )
        return false;

    FingerGestures.Finger finger0 = touches[0];
    FingerGestures.Finger finger1 = touches[1];

    if( !FingerGestures.AllFingersMoving( finger0, finger1 ) )
        return false;

    if( !FingersMovedInOppositeDirections( finger0, finger1 ) )
        return false;

    float startGap = Vector2.SqrMagnitude( finger0.StartPosition - finger1.StartPosition );
    float curGap = Vector2.SqrMagnitude( finger0.Position - finger1.Position );

    if( FingerGestures.GetAdjustedPixelDistance( Mathf.Abs( startGap - curGap ) ) < ( MinDistance * MinDistance ) )
        return false;

    return true;
}

我认为这部分意味着FingerGesture定义它只适用于两个手指,你可以尝试删除它。

    if( !FingerGestures.AllFingersMoving( finger0, finger1 ) )
        return false;