(NO.00001)iOS游戏SpeedBoy Lite成形记(八)
2015-10-20 18:23
246 查看
前一篇提到,如果要想动态修改选手的速度需要在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方法的时候了 ;)
相关文章推荐
- CCNA学习笔记3---备份和升级IOS
- IOS将字符串转换为日期时间格式
- ios 使用SourceTree,KDiff3进行代码的冲突解决步骤
- ios越狱插件Flex2 乐视会员
- iOS根据坐标数据点所在的坐标区域来动态显示到可视范围
- iOS-TableView拖动Cell更换次序
- (NO.00001)iOS游戏SpeedBoy Lite成形记(七)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(七)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(七)
- iOS无处不在详解iOS集成第三方登录(SSO授权登录无需密码)
- 工作备忘-ios中oc枚举值与字符串之间的转换
- iOS百度地图后台持续定位(一)
- iOS内购详细教程 从0到1
- web页面调用IOS的事件
- 解决真机调试,运行Xcode总让输入用户名和密码
- iOS 链式编程思想
- ios学习 - 控件学习
- IOS-17-百度地图开发经常出现的错误和注意点
- (NO.00001)iOS游戏SpeedBoy Lite成形记(六)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(六)