关于cocos客户端跳帧的处理

在cocos引擎游戏开发过程中经常会使用引擎自带的对象生命周期函数来处理一些计时、位移等功能。
一般的处理方法是在update(float dt)方法里用dt叠加一个float常量,这里dt为引擎两帧渲染之间的时间间隔。
但是该方法在卡帧严重的情况下,对于精度要求较高的游戏会产生比较大的误差,尤其是在处理高速运动碰撞检测的时候。
因为卡帧严重的话,帧间隔dt就会被拉大,导致叠加的数值常量会超出预期的边界值。而且此时位移等渲染也会在画面上快速闪动,体验极差。
为了应对此问题,我们尽量在update(float dt)里自己根据时间戳管理帧间隔。
代码示例如下
long long pre_time_ = getCurrentTime();
long long timer_ = 0;
void update(float dt){
      long long cur_time = getCurrentTime();//需要根据平台自己实现 单位为毫秒
      long long time_diff = cur_time - pre_time_;//帧间隔时间
      if(time_diff > 100){
           time_diff = 50;
      }
      timer_ += time_diff;
}
通过这种方式处理的帧间隔在跳帧的时候画面也是顺滑的。
不过这种方式处理的帧间隔不是游戏过程中实际度过的时间,所以使用时需要根据实际情况酌情使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值