2012-03-27 81 views
1

我有一个精灵,我想通过使用我的手指移动屏幕〜拖动来移动它。 我希望我的精灵能够随着速度移动,这意味着不会像我的手指移动那么快。如何使用CCTouchMoved在Cocos2d中以速度/速度拖动CCSprite?

它看起来像这个视频:http://www.youtube.com/watch?v=Vair3CIxZEw(从0:12到0:53)

这是我ccTouch代码。我怎样才能修复,让它移动看起来更顺畅?

谢谢!!! :)

简单地返回TRUE

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { 
    return TRUE; 
} 

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event { 
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch]; 

    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view]; 
    oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation]; 
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation]; 


    CGPoint translation = ccpSub(touchLocation, oldTouchLocation); 
    if (CGRectContainsPoint(_car.boundingBox, touchLocation)) {    
     CGPoint newPos = ccpAdd(_car.position, translation); 
     _car.position = newPos; 
    } 
} 

回答

1

尝试使用CCMoveTo行动平稳移动

CGPoint translation = ccpSub(touchLocation, oldTouchLocation); 
if (CGRectContainsPoint(_car.boundingBox, touchLocation)) { 
    CGPoint newPos = ccpAdd(_car.position, translation); 
    id moveAction = [CCMoveTo actionWithDuration:0.5f position:newPos]; 
    [_car runAction:moveAction]; 
}