[Cocos2D-X ]初窥门径(7)无限地图滚动
地图的滚动原理很简单,就是持续设置地图的位置即可。具体实现用schedule()函数。
[cpp]
pMap = CCSprite::create("MapHenn.png");
pMap->setPosition(ccp(mSize.width/2, mSize.height/2));
this->addChild(pMap, 0);
schedule(schedule_selector( SpriteScene::updateMap),0.1f);
schedule()函数的作用就是根据指定时间,持续调用一个函数。
然后再updateMap()中更新地图的位置。
[cpp]
void SpriteScene::updateMap(float dt)
{
pMap->setPositionX(pMap->getPositionX()-5);
}
Ctrl + F5,就可以看到地图持续向左边滚动了,
还有个问题就是滚动到地图最右边,就会没有背景,在updateMap()中加个限制就好。
[cpp]
void SpriteScene::updateMap(float dt)
{
pMap->setPositionX(pMap->getPositionX()-5);
//如果地图滚动到最右边,让其恢复初始位置
if(pMap->getPositionX() < -pMap->getContentSize().width/2+mSize.width)
{
pMap->setPosition(ccp(mSize.width/2, mSize.height/2));
}
}
这里只写了地图向左滚动,向右滚动同理。
如果在场景中在加一个动态的角色,然后滚动地图,就会造易做图物行走的效果,2D锁视角的游戏就是这个原理。
效果图:
补充:移动开发 , 其他 ,