Как обнаружить мультитач в cocos2d? - PullRequest
1 голос
/ 14 октября 2011

Отредактированное сообщение

Хорошо, я попробовал то, что rptwsthi сказал в другом проекте, просто чтобы проверить его ......

-(id) init
{
if( (self=[super init])) {

    self.isTouchEnabled = YES;
}
return self;
}

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    NSArray *touchArray=[touches allObjects];

    if ([touchArray count] == 2) {
        NSLog(@"touch 2");
    }
    else if([touchArray count]==1) {
        NSLog(@"touch 1");
    }
}

Но только «прикосновение»1 "NSLog всплывает, когда я нажимаю на экран двумя пальцами.Нужно ли мне помещать туда, где говорится в LearnCocos2D, тоже где-то.

Old Post

У меня есть тестовое приложение, которое я делаю, и в нем у меня есть 3 кнопкиHUD, 2 для перемещения влево и вправо, а другой для стрельбы.Это то, что у меня сейчас есть .....

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint loc = [touch locationInView:[touch view]];
loc = [[CCDirector sharedDirector] convertToGL:loc];

//Move Left
CGRect left = CGRectMake(leftButton.position.x-50/2, leftButton.position.y-50/2, 50, 50);
if (CGRectContainsPoint(left, loc)) {
    [self schedule:@selector(moveLeft)]; 
}

//Move Right
CGRect right = CGRectMake(rightButton.position.x-50/2, rightButton.position.y-50/2, 50, 50);
if (CGRectContainsPoint(right, loc)) {
    [self schedule:@selector(moveRight)];
}

//Shoot
CGRect shoot = CGRectMake(shootButton.position.x-50/2, shootButton.position.y-50/2, 50, 50);
    if (CGRectContainsPoint(shoot, loc)) {
    bullet = [CCSprite spriteWithFile:@"bullet.png"];
    bullet.position = ccp(plane.position.x, plane.position.y+20);
    [self addChild:bullet];
    }
}

-(void) ccTouchesEnded:(UITouch *)touch withEvent:(UIEvent *)event {
    [self unschedule:@selector(moveLeft)];
    [self unschedule:@selector(moveRight)];
}

Но я могу нажимать только одну кнопку за раз.Я хочу иметь возможность удерживать правую или левую кнопку, а также стрелять с помощью кнопки съемки.Может кто-нибудь исправить мой код или показать мне базовый пример мультитач?

Также я новичок в разработке для iOS, и любая помощь будет высоко ценится.Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 октября 2011

Вы включили несколько касаний в представлении cocos2d?

[[CCDirector sharedDirector].openGLView setMultipleTouchEnabled:YES];
3 голосов
/ 14 октября 2011

Вы просто используете allObject вместо anyObject, и отметьте его следующим образом:

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    NSArray *touchArray=[touches allObjects];

    if ([touchArray count] == 2)
        //DO ONE THING 
    else if([touchArray count]==1)
        //DO ANOTHER THING
}
...