地圖的滾動原理很簡單,就是持續設置地圖的位置即可。具體實現用schedule()函數。
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()中更新地圖的位置。
void SpriteScene::updateMap(float dt)
{
pMap->setPositionX(pMap->getPositionX()-5);
}
Ctrl + F5,就可以看到地圖持續向左邊滾動了,
還有個問題就是滾動到地圖最右邊,就會沒有背景,在updateMap()中加個限制就好。
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鎖視角的遊戲就是這個原理。
效果圖:
轉載請註明出處:http://blog.csdn.net/Vestigge