Sprite kit 每秒间隔 update 频率伪造

今天用spritekit做了一个小游戏,很好用是很好用但是非常困惑的是里面竟然没有从上次更新到现在的时间差传入方法中,这样的话,我想在update方法中实现每两秒发射一个子弹的功能就变得不好办。只能伪造一个时间差了,

首先明确概念是update方法是一秒更新60次,所以需要围绕这个来进行编。

定义两个属性:

@property (nonatomic) NSTimeInterval lastSpawnTimeInterval;
@property (nonatomic) NSTimeInterval lastUpdateTimeInterval;


第一个属性是纪录上一次更新的时间,这个时间会累加,后面详细讲

第二个属性是在update中纪录更新的频率的上一次时间

然后在单独写一个方法在update中会调用它,lastSpawnTimeInterval 会累加上次到现在的时间差,当它大于1的时候(假设是1,随我们的便几都可以,控制更新秒数),就让lastSpawnTimeInterval归0并且执行我们的方法。

- (void)onesecondshoot:(CFTimeInterval)timeSinceLast
{    self.lastSpawnTimeInterval += timeSinceLast;    if(self.lastSpawnTimeInterval > ShootSpeed)    {        self.lastSpawnTimeInterval = 0;        [self shootLaser];    } }


同样还需要在update方法中计算我们上次到现在的时间并传到上面的方法中去;从上次更新到现在时间差,其实就是当前时间减去上次更新的时间,之后把当前时间付给lastUpdateTimeInterval;在不到1秒的时候就直接把timeSinceLast传过去,如果大于一秒就把它设置为60分之1,然后重新来过。

    CFTimeInterval timeSinceLast = currentTime - self.lastUpdateTimeInterval;
    self.lastUpdateTimeInterval = currentTime;
    if (timeSinceLast > ShootSpeed) {
        timeSinceLast = 1.0/60.0;
        self.lastUpdateTimeInterval = currentTime;
    }
    [self onesecondshoot:timeSinceLast];

好的,这样就完成了伪造上次更新到现在的时间差了,霍霍。

sprite kit真是很强大,估计以后写游戏会很快很好,很厉害,但是很可惜只能在ios平台。


转载于:https://my.oschina.net/sunqichao/blog/194868

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值