失踪人口回归。
前言
上回书说到地图编辑器可以放置元素了,这次我们让元素动起来。首先,我制作了一张动图的素材。
正题
这两张图仔细观察,有不同的地方,我就利用这两张图来实现元素的动态效果。
class GLTexture
{
protected:
//动画序列
vector<GLuint> animation_sequence;
//当前显示的
GLuint cover;
//帧计数器
int frameCounter = 0;
//全局帧计数器
unsigned long * globalCounter=nullptr;
public:
...
...
...
}
在这个纹理类中,本质上是支持动画序列的,以前设计的帧计数器的局部的,所以,就会出现同一个种类的元素动画不同步,这回显得整个场景很乱,所以,又加入了全局计数器,只要所有的元素都指向一个指针,就可以实现同步的动画效果了。
class GMap
{
protected:
Size size;
Size pos;
unsigned long clock = 0;
GLfloat LastTime = 0;
GLfloat delta_time=0;
GameBlock *** map;
public:
GMap();
//设置地图尺寸
void setSize(Size _size,Size _pos){size = _size; pos = _pos;}
//绘制地图
void draw();
//地图初始化
void init(Size _size,Size _pos);
~GMap();
};
于是,我在MAP类中加入了clock来计数,map中的所有元素都使用clock这一个计数器,在每次绘制的时候,计数器就会计数,动画就会随着同步播放。
源码