Cocos2D-x游戏开发之十:背景无限滚动
2014-03-25 21:41
483 查看
今天研究了一下Coco2D-x的背景无限滚动,其实是学习别人的demo,不过自己最终还是折腾出来了,其实还是比较简单了,就是背景不停地移动然后两张图片交替的贴上去。
其精髓之处就是不断地更新背景然后在每一帧里调整两张背景的\X锚点,然后就会给人一种主角再向前奔跑的感觉。核心代码如下:
bool TollgateScene::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSize size= CCDirector::sharedDirector()->getWinSize();
CCSprite* sprite = CCSprite::create("sprite.png");
//sprite->setPosition(ccp(size.width/2, size.height/2));
m_player = Player::createWithLayer(this);
m_player->BlindSprite(sprite);
this->addChild(m_player,2);
m_player->setPosition(ccp(size.width/2,size.height/2));
InitBG();
this->scheduleUpdate();
//schedule(schedule_selector(TollgateScene::update),1.0f);
} while (0);
return true;
}
int TollgateScene::InitBG(void)
{
m_sprite1 =CCSprite::create("tollgateBG.jpg");
m_sprite2=CCSprite::create("tollgateBG.jpg");
CCSize size= CCDirector::sharedDirector()->getWinSize();
m_sprite1->setPosition(ccp(size.width/2,size.height/2));
m_sprite2->setPosition(ccp(size.width+size.width/2,size.height/2));
m_sprite2->setFlipX(true);
this->addChild(m_sprite1,1);
this->addChild(m_sprite2,1);
return 0;
}
void TollgateScene::update(float delta)
{
int X1 = m_sprite1->getPositionX();
int X2 = m_sprite2->getPositionX();
int speed=2;
X1-=speed;
X2-=speed;
CCSize size = m_sprite1->getContentSize();
if (X1<-size.width/2)
{
X2 = size.width/2;
X1=size.width/2+size.width;
}
if (X2<-size.width/2)
{
X1 = size.width/2;
X2=size.width/2+size.width;
}
m_sprite1->setPositionX(X1);
m_sprite2->setPositionX(X2);
}
其精髓之处就是不断地更新背景然后在每一帧里调整两张背景的\X锚点,然后就会给人一种主角再向前奔跑的感觉。核心代码如下:
bool TollgateScene::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSize size= CCDirector::sharedDirector()->getWinSize();
CCSprite* sprite = CCSprite::create("sprite.png");
//sprite->setPosition(ccp(size.width/2, size.height/2));
m_player = Player::createWithLayer(this);
m_player->BlindSprite(sprite);
this->addChild(m_player,2);
m_player->setPosition(ccp(size.width/2,size.height/2));
InitBG();
this->scheduleUpdate();
//schedule(schedule_selector(TollgateScene::update),1.0f);
} while (0);
return true;
}
int TollgateScene::InitBG(void)
{
m_sprite1 =CCSprite::create("tollgateBG.jpg");
m_sprite2=CCSprite::create("tollgateBG.jpg");
CCSize size= CCDirector::sharedDirector()->getWinSize();
m_sprite1->setPosition(ccp(size.width/2,size.height/2));
m_sprite2->setPosition(ccp(size.width+size.width/2,size.height/2));
m_sprite2->setFlipX(true);
this->addChild(m_sprite1,1);
this->addChild(m_sprite2,1);
return 0;
}
void TollgateScene::update(float delta)
{
int X1 = m_sprite1->getPositionX();
int X2 = m_sprite2->getPositionX();
int speed=2;
X1-=speed;
X2-=speed;
CCSize size = m_sprite1->getContentSize();
if (X1<-size.width/2)
{
X2 = size.width/2;
X1=size.width/2+size.width;
}
if (X2<-size.width/2)
{
X1 = size.width/2;
X2=size.width/2+size.width;
}
m_sprite1->setPositionX(X1);
m_sprite2->setPositionX(X2);
}
相关文章推荐
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 03.游戏界面 背景层实现滚动
- Cocos2d-x地图随精灵无限滚动与边缘检测----之游戏开发《赵云要格斗》(3) cocos2dx 3.3移植版
- cocos2d-x游戏开发(三)无限滚动地图
- Cocos2D-x游戏开发之十八:背景随着角色而滚动
- Cocos2d-x地图随精灵无限滚动与边缘检测----之游戏开发《赵云要格斗》(3)
- 【Cocos2d-X开发学习笔记】第26期:游戏背景之滚动地图背景(CCParallaxNode)的使用
- cocos2d-x游戏开发(三)无限滚动地图
- Cocos2d游戏开发无限滚动地图--以Cocos2d-x游戏开发之旅为例课本第5章little runner
- 【Cocos2d-X开发学习笔记】第26期:游戏背景之滚动地图背景(CCParallaxNode)的使用
- cocos2d-x游戏开发(三)无限滚动地图
- Cocos2d-x学习(九):cocos2d-x 无限背景滚动
- Cocos2d-x学习(九):cocos2d-x 无限背景滚动
- 【Cocos2d-x】新手自学(九)滚动背景..实现无限卷轴效果(2.0.1版本)
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题
- cocos2d-x无限滚动背景
- cocos2d-x游戏开发(十四)用shader使图片背景透明
- [转载]cocos2d-x游戏开发(十四)用shader使图片背景透明
- cocos2d 滚动背景 举 无限
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- Cocos2d-x手机游戏开发行业背景分析