2011-01-28 5 views
1

Я создаю простую игру в понг в Xcode. У меня есть версия с двумя игроками, и оба весла можно перемещать и отлично работать. Игра безупречна, за исключением того, что вы не можете одновременно перемещать оба весла, делая режим 2-х игроков бесполезным.Включение мультитач в игре?

Как включить оба весла одновременно? Я уже попробовал выбрать кнопку «Несколько касаний» в Interface Builder, но ничего не делает, и я не совсем уверен, что это даже правильный путь для включения multi touch, как я этого хочу.

Кроме того, моя игра представляет собой приложение на основе вида, если это имеет значение.

Спасибо!

ответ

1

Из моего опыта (что не так уж много). Вы можете создать 2 UIViews для 2 весла, прикоснувшись в одном представлении, будет перемещаться одно весло, а касание в другом будет перемещать другое весло. Надеюсь, это поможет.

Если вы не знаете, как разделить точку зрения, вы можете просто сделать его идентифицировать 2 касаний

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch *touch1 = [[event touchesForView:zone1] anyObject]; 
UITouch *touch2 = [[event touchesForView:zone2] anyObject]; 
if (touch1) 
    touchOffset1 = paddle1.center.x - [touch1 locationInView:touch1.view].x; 
if (touch2) 
    touchOffset2 = paddle2.center.x - [touch2 locationInView:touch2.view].x; 
} 

Это можно использовать, это, вероятно, не самый продуктивный, но это не будет работать, если вы не можете понять, как разделить прикосновения.

+0

Хм. .. Я довольно n00b в этом, и я не знаю, понимаю ли я. Если я создаю два UIViews, как их добавить в существующие весла? –

+0

Я обновил свой код выше, возможно, не лучшая реализация, но факт в том, что вам нужно 2 UIViews, чтобы узнать, пытается ли игрок1 или игрок2 перемещать свой весло. Если у вас только 1 вид, как вы узнаете, кто есть кто? –

1

EDIT: Я неправильно прочитал вопрос. Добавлен фрагмент кода.

Вот код, я использую, чтобы извлечь все штрихи, когда я получаю событие touchesBegan:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSArray *touchesArray = [touches allObjects]; 
    NSUInteger nNumTouches = [touchesArray count]; 
    UITouch *touch; 
    CGPoint ptTouch; 
    for (int nTouch = 0; nTouch < nNumTouches; nTouch++) 
    { 
     touch = [touchesArray objectAtIndex:nTouch]; 
     ptTouch = [touch locationInView:self.view]; 

     // Do stuff with the touch 
    } 
} 

и аналогично для touchesEnded и touchesMoved

+0

Спасибо, что ответили, но я сказал, что пробовал это и не работал. –

+0

Упс, извините! Вы уверены, что ваш код проверяет все массивы в наборе? – Dave

+0

Что именно это означает? Это мое первое приложение кстати ... Спасибо! –

0
self.view.multipleTouchEnabled = YES; 

по умолчанию это не

Смежные вопросы