切换回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开始执行跳跃动作,同时打开胜利背景特效.

编译运行游戏,效果如下:

是不是略有小激动呢 ;)

下一篇本猫将展示如何实现选手成绩的排行榜功能,下篇见 ;)

(NO.00001)iOS游戏SpeedBoy Lite成形记(二十七)的更多相关文章

  1. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能

    游戏大体上基本也就完成了,还差一个排行榜.否则如何激励各位选手创造新纪录呢? 排行榜功能也没什么难的,不过需要一点点排序的算法上的考虑. 这里我们把排行榜记录数据和排序都放在GameState类中,在 ...

  2. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十四)

    我们回到Xcode,打开GameScene.m,首先要添加实例变量: CCNode *_trackLine; 为了根据选中的赛道更新_trackLine的位置,我们添加一个显示方法: -(void)s ...

  3. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)

    现在还有一个视觉上的问题:玩家每次在游戏开始前选择某一赛道时,无法直观的看到所选的是哪条赛道.只能通过界面上方的gambleLabel中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...

  4. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)

    自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...

  5. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)

    现在游戏中如果钱用光了赌场也是不管的,所以我们要加上Game Over的逻辑. 出现游戏结束条件很简单,就是GameState的totalMoney <= 0.而在游戏结束时我们要做些什么呢?有 ...

  6. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)

    下面修改最为关键的matchRun方法里的代码: CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{ _finishedCou ...

  7. (NO.00001)iOS游戏SpeedBoy Lite成形记(二)

    打开SpriteBuilder生成的Xcode项目文件,首先在MainScene添加play回调函数: -(void)play{ CCScene *gameScene = [CCBReader loa ...

  8. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2

    接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法: -(void)justClose{ [self.gameScene removePopup]; } 然后在Game ...

  9. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十六)

    到目前为止,选手跑到终点时仿佛没什么激动人心的事情发生呢?貌似需要添加一些胜利的特效啊! 前面说好的不添加特效,只完成游戏功能的诺言呢? T T 我们主要想实现这样一个特效效果: 1.胜利的玩家突出显 ...

随机推荐

  1. Docker配置 DNS

    Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件. 在容器中使用 mount 命令可以看到挂载信 ...

  2. Python3 XML解析

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 你可以通过本站学习XML教程 ...

  3. BDD敏捷开发入门与实战

    BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...

  4. Kafka系列之-自定义Producer

    前面已经讲到了,在Kafka中,Message是由Producer产生的,Producer产生的Message会发送到Topic的指定Partition中.Producer可以有多种形式,也可以由用户 ...

  5. Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...

  6. Dynamics CRM2016 Web API之更新记录

    本篇继续探索web api,介绍如何通过web api更新记录. 下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的. var entity = {}; en ...

  7. React Native之ViewPagerAndroid 组件

    概述 今天我们来讲解一下关于 ViewPager 的使用,它是一个允许子视图左右滚动翻页的容器.我们知道在Android开发中系统有ViewPager这个组件,作用是实现滚动翻页的,在RN中也是有这么 ...

  8. javascript之正则表达式

    创建正则表达式的两种方法 显式: new RegExp("pattern"[,"flags"]); 例 var regex = new ("abc&q ...

  9. Collections类解析

    最常用的排序: 需要实现Comparable接口 1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它 ...

  10. JPA(三)之实体关系一对多(多对一)

     1.背景介绍: 对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系. 2.实体bean: Order.java代码 ? 1 2 3 4 5 6 7 ...