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

简介:

前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码.

因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样.

所以我决定,在一场比赛中每位选手的速度最多只能修改5次,先在GameScene中添加如下静态变量与常量:

static const NSInteger MaxChanged = 5;
static NSInteger totalChanged = 0;

要实现速度的变化在update中实现,可是怎样实现呢?
因为我们选手移动是通过CCActionMove来做的,立即可以想到,在不改变代码逻辑,最简单的方法就是用CCActionSpeed来修改Move动作的速度.所以我们要在Player类中新增实例变量,以便后来引用.

打开Player.h文件,在接口中添加一个新属性:

@property (nonatomic,weak) CCActionSpeed *speed;

这个属性不在Player的初始化中赋值,而是在实际比赛中赋值.

回到GameScene.m中,我们尝试实现一下update方法:

-(void)update:(CCTime)delta{
    NSInteger fork = (CCRANDOM_0_1() * 100)+1;
    if (_matching && fork%91 == 0 && totalChanged < MaxChanged ) {
        for (Player *player in _players) {
            NSInteger negMul = arc4random_uniform(2) == 0?1:-1;
            CCTime rndSpeed = (negMul * CCRANDOM_0_1())+1;
            player.speed.speed = rndSpeed;
        }
        totalChanged++;
    }
}

代码逻辑比较清晰,简单解释下:
首先判断速度修改的前提条件是否达到,如果不符合3个条件中的任一个,则不会执行修改逻辑代码.这三个条件分别是:

  1. 比赛已经开始
  2. 随机数fork可被91整除
  3. 已修改次数小于最大修改次数

增加前提条件的原因前面已经说过了,是因为我们不想选手速度修改的太过频繁.各位童鞋可以根据自己的实际需求进行调整,这个限制条件并不是绝对的.

从上所述,可以知道无论如何每位选手最多也只能被修改5次速度,我觉得在这里比较合适.

下面的代码比较简单了,就是生成一个随机的速度值,它是一个比率在0到2之间,如果小于1则表示减速,如果大于1表示加速,等于1表示速度不变.

最后别忘了更新totalChanged的值.
哦鸟!接下来又到了真正修改matchRun方法的时候了 ;)

相关文章
|
BI 开发工具 Android开发
和iPhone玩家对战吧,Google Play游戏服务将支持iOS平台
Google今天在游戏开发者大会上宣布了若干与Google Play游戏服务的相关更新,其中和游戏玩家关系最大的也许就是Google Play Game Services将支持iOS平台,这也就意味着回合制和实时多人游戏将同时支持Android和iOS,以后这两个平台的玩家也就可以互动了。显然,这对于游戏开放商也是个好消息——让原本被割裂的用户参与到同场竞技中来。
270 0
和iPhone玩家对战吧,Google Play游戏服务将支持iOS平台
|
算法 开发工具 git
iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法(二)
iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法
154 0
iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法(二)
|
算法 iOS开发
iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法(一)
iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法
154 0
|
开发工具 git iOS开发
iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计(二)
iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计
200 0
|
算法 iOS开发
iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计
iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计
138 0
|
测试技术 Android开发 iOS开发
Unity3D-实现连续点击两次返回键退出游戏(安卓/IOS)
Unity3D-连续点击两次返回键退出游戏 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例...
2818 0