cocos2d确定屏幕用户触摸的位置

时间:2010-12-10 21:53:58

标签: objective-c cocos2d-iphone multi-touch touchesmoved sprite-sheet

我正在尝试使用cocos2d sprites确定用户在屏幕上与角色相关的位置。当用户点击精灵的左边时,我希望精灵向左跑,反之亦然。 我的问题是,当用户点击一侧并移动到另一侧而不放松触摸(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 :(得分:0)

难道你不能把它放在ccTouchesBegan中吗?这会解决它,我想......

答案 1 :(得分:0)

您必须记下您当前的位置,并使用此功能ccp(location.x,location.y),您可以将您的精灵移动到您想要的方向

答案 2 :(得分:0)

您需要像这样转换您的触摸位置。

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

然后,您在cocos2d中的视图上获得正确的触摸位置。