Cocos2d-X3.0实现地图的无限滚动

Cocos2d-X3.0实现地图的无限滚动,第1张

概述我最近在做一个跑酷类游戏,在跑酷类游戏中就会用到地图无限滚动,在网上查了许多资料后,我也明白了地图无限滚动的实现方法。 为了更加形象的介绍地图的无限滚动,我特意画了几张示意图 首先需要准备两张地图,并且在初始化的时候将第一张地图放在窗口上,第二张地图放在第一张地图的后面   滚动地图,当第一张地图的最右端和窗口的最左端重合 将第一张地图放在第二张地图的后面   当第二张地图的最右端在窗口的最左端

我最近在做一个跑酷类游戏,在跑酷类游戏中就会用到地图的无限滚动,在网上查了许多资料后,我也明白了地图无限滚动的实现方法。

为了更加形象的介绍地图的无限滚动,我特意画了几张示意图

首先需要准备两张地图,并且在初始化的时候将第一张地图放在窗口上,第二张地图放在第一张地图的后面

滚动地图,当第一张地图的最右端和窗口的最左端重合

将第一张地图放在第二张地图的后面

当第二张地图的最右端在窗口的最左端时

将第二张地图放在第一张地图的后面(第一张地图的最右端和第二张地图的最左端重合)

上面的就是地图无限循环滚动的实现逻辑,下面通过代码实现地图的无限滚动

首先创建一个SceneMap类,在SceneMap.h中添加下面的代码

#ifndef _SceneMap_H__#define _SceneMap_H__#include "cocos2d.h"USING_NS_CC;class SceneMap : public Layer{public:	//帧循环调度函数	voID update(float time);    virtual bool init();      static Scene* scene();    CREATE_FUNC(SceneMap);	TMXTiledMaP* map1;	TMXTiledMaP* map2;};#endif

在SceneMap.cpp中添加下面的代码

#include "SceneMap.h"Scene* SceneMap::scene(){    Scene *scene = Scene::create();	SceneMap *layer = SceneMap::create();    	scene->addChild(layer);    	return scene;}bool SceneMap::init(){    if(!Layer::init())    {        return false;    }	Size winSize = Director::getInstance()->getWinSize();	//加载地图	map1 = TMXTiledMap::create("map1.tmx");	map2 = TMXTiledMap::create("map2.tmx");	addChild(map1);	addChild(map2);	//将第二张地图的位置设置到第二张地图的后面	map2->setpositionX(map1->getpositionX() + map1->getContentSize().wIDth);	//启动帧循环调度	scheduleUpdate();    	return true;}voID SceneMap::update(float time){	//每一帧地图向左移动5个像素	map1->setpositionX(map1->getpositionX() - 5);	map2->setpositionX(map2->getpositionX() - 5);	//当第一张地图的最右端和窗口的最左端重合时	if(map1->getpositionX() + map1->getContentSize().wIDth <= 0)	{		//将第一张地图添加到第二张地图后面		//第一张地图的横坐标 = 第二张地图的横坐标 + 第二张地图的宽度		map1->setpositionX(map2->getpositionX() + map2->getContentSize().wIDth);	}	//当第二张地图的最右端和窗口的最左端重合时	//将第二张地图添加到第一张地图后面	if(map2->getpositionX() + map2->getContentSize().wIDth <= 0)	{		//将第二张地图添加到第一张地图后面		//第二张地图的横坐标 = 第一张地图的横坐标 + 第一张地图的宽度		map2->setpositionX(map1->getpositionX() + map1->getContentSize().wIDth);	}}
总结

以上是内存溢出为你收集整理的Cocos2d-X3.0实现地图的无限滚动全部内容,希望文章能够帮你解决Cocos2d-X3.0实现地图的无限滚动所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1056197.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存