cocos植物大战僵尸(三)游戏场景:地图滚动
来源:互联网 发布:淘宝实拍保护网址 编辑:程序博客网 时间:2024/04/30 14:59
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值是0。Init中先调用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。同理,当按下开始游戏,地图回滚也相应处理。流程如下:
0 0
- cocos植物大战僵尸(三)游戏场景:地图滚动
- cocos植物大战僵尸(二)主菜单场景:单例类
- cocos植物大战僵尸(一)load场景:异步加载资源
- cocos植物大战僵尸(四)选择植物卡片:植物卡片类
- cocos植物大战僵尸(五)选择植物卡片:待选择植物卡片管理器类
- (大二游戏)植物大战僵尸之僵尸来袭
- cocos2d-x 植物大战僵尸(三) bool型值对游戏流程的控制
- cocos2d-x植物大战僵尸(1) (地图的加载)
- cocos植物大战僵尸(六)已选植物卡片管理器类
- Android植物大战僵尸教程学习总结(三)
- cocos2dx 植物大战僵尸 11 场景自带的植物
- 植物大战僵尸游戏设计分析
- Cocos2d 植物大战僵尸游戏解析
- 用Python和Pygame写游戏-从入门到精通(实战三:植物大战僵尸1)
- javascript 写植物大战僵尸(一)
- cocos2d-x 植物大战僵尸(一:)
- cocos2d-x 植物大战僵尸(二)
- [NOI2009]植物大战僵尸(最大流)
- 计算候选关键字
- Eclipse与Git结合使用
- 单例模式实现模板
- 黑马程序员-Java基础:反射
- 规则化和模型选择(Regularization and model selection)
- cocos植物大战僵尸(三)游戏场景:地图滚动
- 关于集成学习基础的简单描述
- jdk各版本区别
- servlet/filter/listener/interceptor区别与联系
- LeetCode Path Sum II
- Ubuntu12.04下Qt5.2编译使用webkit程序 cannot find -lxslt gio-2.0 gstapp-0.10
- 辛星浅析symfony中的bundle
- 去除谷歌浏览器和部分IE浏览器记住密码功能
- SpringSecurity3.2.8翻译说明