以下爲幾個使player運動的函數的實現
/*
void HelloWorld::pmhcollision() //
{
CCPoint playerpoint = player->getPosition();
//獲得玩家的方位
CCSize playersize = player->getContentSize();
//獲得玩家圖片的尺寸
CCTMXTiledMap* map = (CCTMXTiledMap*) getChildByTag(kTagTileMap); //獲得地圖屬性
int indexx,indexy;
char mch[256];
CCTMXLayer* layer = map->layerNamed("logic");
//獲得tmx地圖的logic層的layer
for(int playery = playerpoint.y - playersize.height;playery <= playerpoint.y;playery ++)
{//轉換爲tile座標
indexx = (playerpoint.x - playersize.width / 2) / map->getTileSize().width;//
indexy = (playerpoint.y) / map->getTileSize().height;
CCPoint playerindex = ccp(indexx,indexy);
int tilegid = layer->tileGIDAt(playerindex); //獲取此方位的tilegid(tiled定義的圖片編號)
if(tilegid > 0)
{
CCMutableDictionary<string,CCString *> *tiledic = map->propertiesForGID(tilegid);
//獲取tilegid上的properties的屬性
CCString *mvalue = tiledic->objectForKey("collion");
//將string轉爲int型
int mv = mvalue->toInt(); //
if(mv == 2)
{
xVel = 0;
playerpoint.x = (indexx + 1) * map->getTileSize().width + playersize.width / 2;
player->setPosition(playerpoint);//刷新player座標
}
return;
}
indexx = (playerpoint.x + playersize.width / 2 - 1) / map->getTileSize().width;//
indexy = (playerpoint.y) / map->getTileSize().height;
playerindex = ccp(indexx,indexy); //
tilegid = layer->tileGIDAt(playerindex);
if(tilegid > 0)
{
CCMutableDictionary<string,CCString *> *tiledic = map->propertiesForGID(tilegid);
CCString *mvalue = tiledic->objectForKey("collion");
int mv = mvalue->toInt(); //
if(mv == 2)
{
xVel= 0;
playerpoint.x = (indexx) * map->getTileSize().width - playersize.width / 2;
player->setPosition(playerpoint);
}
return;
}
}
}
void HelloWorld::pmvcollision() //
{
CCPoint playerpoint = player->getPosition();
CCSize playersize = player->getContentSize();
CCTMXTiledMap* map = (CCTMXTiledMap*) getChildByTag(kTagTileMap); //
int indexx,indexy;
CCTMXLayer* layer = map->layerNamed("logic"); //獲
indexx = (playerpoint.x) / map->getTileSize().width; //
indexy = map->getMapSize().height - (playerpoint.y) / map->getTileSize().height;
CCPoint playerindex = ccp(indexx,indexy);
int tilegid = layer->tileGIDAt(playerindex); //
if(tilegid > 0)
{
CCMutableDictionary<string,CCString *> *tiledic = map->propertiesForGID(tilegid);
CCString *mvalue = tiledic->objectForKey("collion"); //
int mv = mvalue->toInt();
if(mv == 1) //
{
if(yVel < 0)
{
xVel = 0;
yVel = 0;
jump=true;
playerpoint.y = (map->getMapSize().height - indexy) * map->getTileSize().height;
player->setPosition(playerpoint); //
}
return;
}
}
if(yVel>0)
{
jump=false;
}
yVel -= 0.1;
}
*/
Cocos2dx完美支持tiled製作的tmx格式圖片,此格式爲tilemap圖片,方便了場景的製作,降低了工作量。
Player的準備工作已完成,接下來就開始讓player人物動起來