cocos2d-x 無限地圖滾動
阿新 • • 發佈:2019-01-31
地圖的滾動原理很簡單,就是持續設定地圖的位置即可。具體實現用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鎖視角的遊戲就是這個原理。
效果圖: