-(void)addMonster{// Create spriteSKSpriteNode*monster=[SKSpriteNodespriteNodeWithImageNamed:@"monster"];// Determine where to spawn the monster along the Y axisintminY=monster.size.height/2;intmaxY=self.frame.size.height-monster.size.height/2;intrangeY=maxY-minY;intactualY=(arc4random()%rangeY)+minY;// Create the monster slightly off-screen along the right edge,// and along a random position along the Y axis as calculated abovemonster.position=CGPointMake(self.frame.size.width+monster.size.width/2,actualY);[selfaddChild:monster];// Determine speed of the monsterintminDuration=2.0;intmaxDuration=4.0;intrangeDuration=maxDuration-minDuration;intactualDuration=(arc4random()%rangeDuration)+minDuration;// Create the actionsSKAction*actionMove=[SKActionmoveTo:CGPointMake(-monster.size.width/2,actualY)duration:actualDuration];SKAction*actionMoveDone=[SKActionremoveFromParent];[monsterrunAction:[SKActionsequence:@[actionMove,actionMoveDone]]];}
-(void)update:(NSTimeInterval)currentTime{// Handle time delta.// If we drop below 60fps, we still want everything to move the same distance.CFTimeIntervaltimeSinceLast=currentTime-self.lastUpdateTimeInterval;self.lastUpdateTimeInterval=currentTime;if(timeSinceLast>1){// more than a second since last updatetimeSinceLast=1.0/60.0;self.lastUpdateTimeInterval=currentTime;}[selfupdateWithTimeSinceLastUpdate:timeSinceLast];}