0

私はゲームコントロールとしてタップとスワイプを解釈するGLKViewControllerベースのゲームに取り組んでいます。最初のプレイヤーに画面の左側をタップまたはスワイプさせ、もう一方のプレーヤーは画面の右側をタップまたはスワイプさせることで、2プレーヤーモードをサポートしたいと考えています。完璧な世界では、スワイプがうまくなくても画面の中心線を通り抜けてもジェスチャー認識機能を動作させたいと思います(スワイプの開始点はどのプレーヤーが入力を取得するかを決定するために使用されます)。iPad:画面の左右にあるジェスチャーレコグナイザー

これを実装するにはどうすればよいでしょうか?ジェスチャ認識機能を画面の左半分に、もう1つを画面の右側に置くことはできますか?両方の譜表が同時にタップ/スワイプされていても、2つの別個のレコグナイザが正しく機能しますか?または、全画面認識機能を作成し、スワイプとタップを完全に自分で解析する必要がありますか?私はジェスチャーレコグナイザーの経験がありません。そのため、好みのアプローチが何であるか、同時に複数のものをスワイプしたときにどれくらいうまくいくか分かりません。

答えて

0

2つのUIViewがGLKViewの上に重なってしまいました.1つは画面の左側に、もう1つは右側に重ねられました。各ビューにはUIPanGestureRecognizerUILongPressGestureRecognizerがあります(長押し認識器は、基本的に、より柔軟なタップです。いくつかのジェスチャが同時にパンとタップとして解釈されるのを拒否するのに必要です)。これは非常にうまくいった。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Add tap and pan gesture recognizers to handle game input. 
    { 
     UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftSidePan:)]; 
     panRecognizer.delegate = self; 
     [self.leftSideView addGestureRecognizer:panRecognizer]; 

     UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftSideLongPress:)]; 
     longPressRecognizer.delegate = self; 
     longPressRecognizer.minimumPressDuration = 0.0; 
     [self.leftSideView addGestureRecognizer:longPressRecognizer]; 
    } 
    { 
     UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightSidePan:)]; 
     panRecognizer.delegate = self; 
     [self.rightSideView addGestureRecognizer:panRecognizer]; 

     UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightSideLongPress:)]; 
     longPressRecognizer.delegate = self; 
     longPressRecognizer.minimumPressDuration = 0.0; 
     [self.rightSideView addGestureRecognizer:longPressRecognizer]; 
    } 
} 

- (void)handleLeftSidePan:(UIPanGestureRecognizer *)panRecognizer 
{ 
    [self handleGameScreenPan:panRecognizer withVirtualController:&g_iPadVirtualController[0]]; 
} 

- (void)handleRightSidePan:(UIPanGestureRecognizer *)panRecognizer 
{ 
    [self handleGameScreenPan:panRecognizer withVirtualController:&g_iPadVirtualController[1]]; 
} 

- (void)handleLeftSideLongPress:(UILongPressGestureRecognizer *)longPressRecognizer 
{ 
    [self handleGameScreenLongPress:longPressRecognizer withVirtualController:&g_iPadVirtualController[0]]; 
} 

- (void)handleRightSideLongPress:(UILongPressGestureRecognizer *)longPressRecognizer 
{ 
    [self handleGameScreenLongPress:longPressRecognizer withVirtualController:&g_iPadVirtualController[1]]; 
} 
関連する問題