(NO.00001)iOS游戏SpeedBoy Lite成形记(八)
2015-10-20 18:23
267 查看
前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码.
因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样.
所以我决定,在一场比赛中每位选手的速度最多只能修改5次,先在GameScene中添加如下静态变量与常量:
要实现速度的变化在update中实现,可是怎样实现呢?
因为我们选手移动是通过CCActionMove来做的,立即可以想到,在不改变代码逻辑,最简单的方法就是用CCActionSpeed来修改Move动作的速度.所以我们要在Player类中新增实例变量,以便后来引用.
打开Player.h文件,在接口中添加一个新属性:
这个属性不在Player的初始化中赋值,而是在实际比赛中赋值.
回到GameScene.m中,我们尝试实现一下update方法:
代码逻辑比较清晰,简单解释下:
首先判断速度修改的前提条件是否达到,如果不符合3个条件中的任一个,则不会执行修改逻辑代码.这三个条件分别是:
比赛已经开始
随机数fork可被91整除
已修改次数小于最大修改次数
增加前提条件的原因前面已经说过了,是因为我们不想选手速度修改的太过频繁.各位童鞋可以根据自己的实际需求进行调整,这个限制条件并不是绝对的.
从上所述,可以知道无论如何每位选手最多也只能被修改5次速度,我觉得在这里比较合适.
下面的代码比较简单了,就是生成一个随机的速度值,它是一个比率在0到2之间,如果小于1则表示减速,如果大于1表示加速,等于1表示速度不变.
最后别忘了更新totalChanged的值.
哦鸟!接下来又到了真正修改matchRun方法的时候了 ;)
因为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个条件中的任一个,则不会执行修改逻辑代码.这三个条件分别是:
比赛已经开始
随机数fork可被91整除
已修改次数小于最大修改次数
增加前提条件的原因前面已经说过了,是因为我们不想选手速度修改的太过频繁.各位童鞋可以根据自己的实际需求进行调整,这个限制条件并不是绝对的.
从上所述,可以知道无论如何每位选手最多也只能被修改5次速度,我觉得在这里比较合适.
下面的代码比较简单了,就是生成一个随机的速度值,它是一个比率在0到2之间,如果小于1则表示减速,如果大于1表示加速,等于1表示速度不变.
最后别忘了更新totalChanged的值.
哦鸟!接下来又到了真正修改matchRun方法的时候了 ;)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 我是运营,我没有假期
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例