Как я могу перетащить CCSprite со скоростью / скоростью в cocos2d с помощью CCTouchMoved? - PullRequest
1 голос
/ 27 марта 2012

У меня есть спрайт, я хочу переместить его, используя палец для перемещения по экрану. Я хочу, чтобы мой спрайт двигался со скоростью, это означает, что не так быстро, как мой палец.

похоже, что это видео: 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 Ответ

1 голос
/ 18 июня 2012

Попробуйте использовать действие 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];
}
...