切换回Xcode,在GameScene.m中添加新的实例变量:_winLayer.
接下来在第一个选手到达终点时,我们可以完成选手胜利的动画特效了.
首先,在GameScene.m中添加一个新方法playerWin:
-(void)playerWin:(CCSprite*)player{ }
我们需要将冠军玩家传递给该方法.注意参数的类型是CCSprite而不是Player,虽然Player直接继承自CCSprite.这是因为我们只是需要玩家外形相关的内容,不关Player类特有的属性什么事.
下面我们实现上一篇提到的3个特效:玩家移动到屏幕中心,玩家不停跳跃,玩家背后衬托出胜利光芒.
补全最终的playerWin方法如下:
-(void)playerWin:(CCSprite*)player{ //CGPoint pos = ccp(0.4, 0.6); CGPoint pos = ccp(0.5, 0.5); player.anchorPoint = ccp(0.5, 0.5); CCActionMoveTo *move = [CCActionMoveTo actionWithDuration:3 position:pos]; CCActionScaleTo *scale = [CCActionScaleTo actionWithDuration:3 scale:3.0]; CCActionJumpBy *jump = [CCActionJumpBy actionWithDuration:60 position:ccp(0, 0) height:0.05 jumps:60]; CCActionCallBlock *block = [CCActionCallBlock actionWithBlock:^{ _winLayer.visible = YES; }]; CCActionSequence *seq0 = [CCActionSequence actions:move,jump,nil]; CCActionSequence *seq1 = [CCActionSequence actions:scale,block,nil]; [player runAction:seq0]; [player runAction:seq1]; }
代码实现功能为player移动到屏幕中心,同时大头贴尺寸放大到原来的3倍.然后player开始执行跳跃动作,同时打开胜利背景特效.
编译运行游戏,效果如下:
是不是略有小激动呢 ;)
下一篇本猫将展示如何实现选手成绩的排行榜功能,下篇见 ;)