cocos植物大战僵尸(三)游戏场景:地图滚动

cocos植物大战僵尸(三)游戏场景:地图滚动,第1张

概述2.3游戏场景 2.3.1 地图滚动 根据json表读取出,当前关卡要载入哪张地图,并读取当前地图的相关。Json表为数组结构,配置如下: [ {"Level":0, "MapType":0, "SunInit":100, "CardSum":1, "ChooseCardSum":1, "0":{"Name":"Peashooter"} },..........] 其中 2.3游戏场景 2.3.1地图滚动

根据Json表读取出,当前关卡要载入哪张地图,并读取当前地图的相关。Json表为数组结构,配置如下:

[	{"Level":0,"MapType":0,"SunInit":100,"CardSum":1,"ChooseCardSum":1,"0":{"name":"Peashooter"}	},..........]

其中Level:当前第几关。MapType:当前关卡的类型,也是选择地图图片的关键,有以下几种类型

enum MapType{	GrasslandOfOneline = 0,//一条线草地	GrasslandOfThreeline,//三条线草地	GrasslandOfDay,//草地白天	GrasslandOfNight,//草地夜晚	PoolOfDay,//泳池白天	PoolOfNight,//泳池夜晚};

程序读取到第几关,然后根据第几关去选择关卡的类型(即地图类型),然后去选择相应的图片作为游戏的背景图。代码如下:

voID CGameMapLayer::mapLoad(){	int iLevel = CGlobalComm::getInstance()->getiGameLevel();	Json::Reader reader;	Json::Value root;	std::string data = fileUtils::getInstance()->getStringFromfile(PATH_LEVEL_CONfig);	reader.parse(data,root,false);//读Json文件	int iMapType = root[iLevel]["MapType"].asInt();	std::string sFirstname = StringUtils::format("PVZBackground_%d.png",iMapType);//名字转化为缓冲池中第一张图片	m_spMap = Sprite::createWithSpriteFramename(sFirstname);	m_spMap->setAnchorPoint(Point(0,0));//设置锚点,把中心坐标系转换成世界坐标	m_spMap->setposition(Point(m_iMapXpos,0));	this->addChild(m_spMap,LAYER_FirsT);}

这里的m_iMapXpos值是0Init中先调用mapLoad,再开启使地图滚动的定时器。

voID CGameMapLayer::mapRoll(float dt){	if (m_iMapXpos > -380)	{		m_iMapXpos -= 19;		m_spMap->setposition(Point(m_iMapXpos,0));	}	else//当地图是滚动到最右边的时候,显示出植物选择层,游戏菜单层	{		gameMenuload();		choosePlantLoad();		this->unschedule(schedule_selector(CGameMapLayer::mapRoll));//滚动到极限的时候就关闭滚动定时器,所以还是不能使用一次定时器	}}

窗口的大小设置为900*600像素的,背景图片大小为1280*600像素的,所以每隔一定时间(0.05s),m_iMapXpos递减19像素,再根据m_iMapXpos设置背景精灵m_spMap的位置。当m_spMap滚到了最右边时,显示游戏菜单layer,选择职位开片layer。同理,当按下开始游戏,地图回滚也相应处理。流程如下:

总结

以上是内存溢出为你收集整理的cocos植物大战僵尸(三)游戏场景:地图滚动全部内容,希望文章能够帮你解决cocos植物大战僵尸(三)游戏场景:地图滚动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1070311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存