Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to end an SKAction mid-action?

Tags:

I have a subclass of SKSpriteNode (monsterNode). It automatically runs around the screen using vectors to follow the player. I am currently using the following action to make it run around:

SKAction *actionMove = [SKAction moveTo:actualDistance duration:time];         [self runAction:actionMove completion:^ {             _currentState = SVGMonsterStateIdle;         }]; 

I am wondering if its possible to make it so the monsterNode actually STOPS running the action if it hits the boundary of the iOS device screen. I currently have SKSpriteNode boundaries on the edges of the screen, linked with a contact delegate to notify if the monster and walls make contact. However, that means nothing if I can't actually stop the monster's actionMove action from going to completion. The monster needs to stop at the boundaries of the screen. If it is not possible to stop an SKAction mid-execution, is there a roundabout way to do so?

like image 918
EvilAegis Avatar asked Sep 27 '13 02:09

EvilAegis


1 Answers

Look at the SKNode.h header file - it has two functions listed:

- (void)removeActionForKey:(NSString *)key; - (void)removeAllActions; 

The latter will work: [monsterNode removeAllActions];

like image 155
ecsos Avatar answered Oct 13 '22 22:10

ecsos