cocos2d-x 以主角爲中心移動地圖(學習筆記)

在遊戲中我們往往想讓英雄跟隨地圖走動而不超出地圖邊界

//得到屏幕大小

Size visibleSize = Director::getInstance()->getVisibleSize();

//得到地圖方塊的數量

Size mapTiledNum = m_gGameMap->getMapSize();

//得到方塊的大小

Size tiledSize = m_gGameMap->getTileSize();

//根據方塊數量和方塊尺寸得到地圖的尺寸

Size mapSize = Size( mapTiledNum.width * tiledSize.width, mapTiledNum.height * tiledSize.height );

//主角座標

Vec2 vPos = m_gSprite->getPosition();

//如果主角座標小於屏幕的一半,則取屏幕重點座標,否則取主角座標

float  x = MAX( vPos.x , visibleSize.width/2 );

float y = MAX( vPos.x , visibleSize.height/2 );

//如果x,y的座標大於地圖右上角的座標,則取地圖右上角的座標,這步是爲了防止地圖超出屏幕造成出現黑邊的情況

x = MIN( x , mapSize.width - visibleSize.width/2 );

y = MIN( y , mapSize.height - visibleSize.height/2 );

//目標點

Vec2 destPos = Vec2( x , y );

//屏幕中心點

Vec2 centerPos = Vec2( visibleSize.width/2 , visibleSize.height/2 );

//屏幕中心點和所要移動的目標點之間的距離

Vec2 viewPos = centerPos - destPos;

//設置層位置

this->setPosition(  viewPos  );


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章