Cocos2D определяет, где на экране пользователь касается - PullRequest
1 голос
/ 11 декабря 2010

Я пытаюсь определить, где пользователь касается касания персонажа на экране, используя спрайты cocos2d. Когда пользователь щелкает слева от спрайта, я хочу, чтобы спрайт запускался влево, и наоборот. Моя проблема в том, что когда пользователь нажимает на одну сторону и переходит на другую сторону, не отпуская прикосновение (cctouchended не срабатывает), спрайт продолжает работать, но не в том направлении. Где бы я реализовал проверку (и как), чтобы определить, переместилось ли касание пользователя на другую сторону персонажа?

текущий код, который я пробовал:

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInView: [touch view]];  
    CGPoint moveDifference = ccpSub(touchLocation, _character.position);
    if (moveDifference.x < 0) {
      _character.flipX = YES;
    } else {
      _character.flipX = NO;
    }   
}

Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 января 2011

Вы должны отметить свое текущее местоположение, и с помощью этой функции ccp (location.x, location.y) вы можете перемещать свой спрайт в том направлении, в котором вы хотите

0 голосов
/ 21 июля 2011

Вам нужно преобразовать Ваше местоположение касания следующим образом.

CGPoint location = [touch locationInView: [touch view]];    
location = [[CCDirector sharedDirector] convertToGL: location];

Тогда вы получите правильное местоположение касания в вашем представлении в cocos2d.

0 голосов
/ 13 декабря 2010

Разве вы не можете просто положить его в ccTouchesBegan? Это решило бы это, я думаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...