Oto mój kod, próbowałem-
-(void) animatedMove:(CCSprite *)character
{
ccTime actualDuration = 10;
id actionMove = [CCMoveBy actionWithDuration:actualDuration
position:ccp(screen_width+50, character.position.y)];
id actionBack = [CCMoveBy actionWithDuration:1
position:ccp(50, screen_height/2)];
id actionFinished = [CCCallFuncN actionWithTarget:self
selector:@selector(animatedMoveFinished:)];
[character runAction:[CCSequence actions:actionMove,actionBack,actionFinished,nil]];
}
-(void) animatedMoveFinished:(id)sender
{
CCSprite *character = (CCSprite *)sender;
[self animatedMove:character];
NSLog(@"( %.2f, %.2f", character.position.x, character.position.y);
}
przeniesienie postaci z ekranu i nie reinicjowanie do pozycji początkowej.
Odpowiedzi:
1 dla odpowiedzi № 1Wygląda na to, że chcesz, aby pojawił się po lewej stronie, zszedł z prawej strony, pojawi się ponownie z lewej strony itd. Itd ...
ccTime actualDuration = 10;
id actionMoveBy = [CCMoveBy actionWithDuration:actualDuration
position:ccp(screen_width+50, character.position.y];
id actionMoveTo = [CCMoveTo actionWithDuration: 0.0f position: character.position];
id actionSequence = [CCSequence actions: actionMoveBy, actionMoveTo, nil];
[character runAction: [CCRepeatForever actionWithAction: actionSequence]];
To będzie "pętla na zawsze" (z powodu użycia"CCRepeatForever"), powodując, że obiekt znaku przechodzi z pierwotnej pozycji początkowej na skrajną prawą stronę ekranu (używając matematyki ccp (), którą już stosowałeś), a następnie natychmiast po tym, jak "przeniesie się natychmiast" (z powodu Czas trwania 0s) z powrotem do oryginalnej pozycji początkowej, a następnie powtórz ...