最近项目做一个需要背景无限滚动,适用飞机,跑酷类型无限背景滚动等游戏,在网上找了一些例子,发现都犯严重的错误,就是滚动不和时间挂钩,会看到卡顿现象。每一帧+速度,正确来是s =v*dt,v速度,dt每一帧时间。

原理

现有一张图片,并排到一起是无缝衔接,假设你的分辨率是1280*720,用的图片长度是1552,如放一张图片,是足够长度的,至于为啥要是为了并排的图,能在移动时候,出现短暂黑的。

  1. 两个精灵分别A B 都是用同一张图片
  2. AB 同时移动 speed*dt,这里注意一定要乘时间
  3. 当B的位置移动到<0.0f时(表示后面的图片完全在屏幕上,A已移动到屏幕外面),把A放到B后面,这个时候就是BA。然后又到A移到<0.0f。

滚动代码

资源和图:http://pan.baidu.com/s/1mf2WY

BgScroll.h

BgScroll.cpp

使用方法

总结

在游戏里面的任何动作,都需要*时间,因为每一帧的时间不是固定的,以前在某段时间会卡顿一下。

《cocos2d-x背景无限滚动》