void Bullet::bulletBoom() { Rect rect = getBoundingBox(); Size mapSize = mTileMapInfo->getTileMap()->getContentSize(); if (rect.getMinX() < 0 || rect.getMaxX() >= mapSize.width || rect.getMinY() < 0 || rect.getMaxY() >= mapSize.height) return; TMXLayer* tmxLayer = mTileMapInfo->getTileMap()->getLayer("layer_0"); Size tileSize = tmxLayer->getMapTileSize(); float MinY = mapSize.height - rect.getMinY(); float MaxY = mapSize.height - rect.getMaxY(); Point pt = Point((int) rect.getMinX() / tileSize.width, (int) (MinY / tileSize.height)); if (gidToTileType[tmxLayer->getTileGIDAt(pt)] == tileWall) tmxLayer->setTileGID(gidToTileType[tileNone], pt); pt = Point((int) rect.getMinX() / tileSize.width, (int) (MaxY / tileSize.height)); if (gidToTileType[tmxLayer->getTileGIDAt(pt)] == tileWall) tmxLayer->setTileGID(gidToTileType[tileNone], pt); pt = Point((int) rect.getMaxX() / tileSize.width, (int) (MinY / tileSize.height)); if (gidToTileType[tmxLayer->getTileGIDAt(pt)] == tileWall) tmxLayer->setTileGID(gidToTileType[tileNone], pt); pt = Point((int) rect.getMaxX() / tileSize.width, (int) (MaxY / tileSize.height)); if (gidToTileType[tmxLayer->getTileGIDAt(pt)] == tileWall) tmxLayer->setTileGID(gidToTileType[tileNone], pt); }
bool HelloWorld::onTouchBegan(Touch* touch, Event* event) { auto m_tBeginPos = Point(touch->getLocation().x,touch->getLocation().y); auto map = static_cast<TMXTiledMap*>( getChildByTag(1)); Point mapp = map->getPosition(); Point aimmapindex = convertto2d(m_tBeginPos.x - mapp.x,m_tBeginPos.y - mapp.y); if(aimmapindex.x < 0 || aimmapindex.y < 0 || aimmapindex.x >= map->getMapSize().width || aimmapindex.y >= map->getMapSize().height) { return false; } TMXLayer* layer = map->layerNamed("grass"); layer->setTileGID(4,aimmapindex); return true; }
TMXResizeTest::TMXResizeTest() { auto map = TMXTiledMap::create("TileMaps/orthogonal-test5.tmx"); addChild(map, 0, kTagTileMap); Size CC_UNUSED s = map->getContentSize(); CCLOG("ContentSize: %f, %f", s.width,s.height); TMXLayer* layer; layer = map->getLayer("Layer 0"); auto ls = layer->getLayerSize(); for (unsigned int y = 0; y < ls.height; y++) { for (unsigned int x = 0; x < ls.width; x++) { layer->setTileGID(1, Vec2( x, y ) ); } } }