您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx tiledmap 碰撞检测

2014-10-07 17:03 375 查看
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}

CCSize winSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

map=CCTMXTiledMap::create("1.tmx");
addChild(map);

CCTMXObjectGroup* objgroup=map->objectGroupNamed("objLayer");
CCDictionary* dic=objgroup->objectNamed("hero");
float x=dic->valueForKey("x")->floatValue();
float y=dic->valueForKey("y")->floatValue();
float id=dic->valueForKey("id")->floatValue();
const char* idstr=dic->valueForKey("id")->getCString();
CCLOG("%f %f %f",x,y,id);
CCLOG(idstr);

hero=CCSprite::create("hero.png");
hero->setPosition(ccp(x,y));
addChild(hero);

CCMoveBy *move=CCMoveBy::create(2,ccp(winSize.width/2,-winSize.height/2));
hero->runAction(move);
schedule(schedule_selector(HelloWorld::judeCollion));
return true;
}

void HelloWorld::judeCollion(float dt)
{
if(hero!=NULL)
{
CCTMXLayer* collionLayer=map->layerNamed("collionLayer");
CCPoint tilePos=positionToTid(hero->getPosition());
if(collionLayer->tileGIDAt(tilePos))
{
CCLOG("collion");
collionLayer->removeTileAt(tilePos);
}
}

}
CCPoint HelloWorld::positionToTid(CCPoint position)
{
int x = position.x /map->getTileSize().width;
int y = (map->getMapSize().height*map->getTileSize().height
- position.y) /map->getTileSize().height;
return ccp(x, y);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: