使用cocos2d-x3.x版本开发平台跳跃游戏,在Tiled中编辑关卡。载入关卡地图TMX文件后,需要为每一个瓦片添加PhysicsBody,如果逐一添加会产生过多物理目标,极度影响性能,是否有类似于将邻近瓦片连接为一体的方法,或者避免相邻瓦片碰撞的方法?使用的代码如下所示
想到只使用一个PhysicsBody并通过addShape添加PhysicsShape的方法解决,但不知道如何调整每一个PhysicsShape相对于PhysicsBody的坐标的方法。
不知道有什么好的解决方案,谢谢大家!
TMXLayer * l_groundLayer = tiledMap->getLayer(TMX_GROUND_LAYER);
auto l_mapSize = tiledMap->getMapSize();
for (int i = 0; i < l_mapSize.width; i++)
{
for (int j = 0; j < l_mapSize.height; j++)
{
Sprite * l_tileSprite = l_groundLayer->getTileAt(Vec2(i,j));
if(l_tileSprite!=nullptr)
{
PhysicsBody* l_tileSpriteBody = PhysicsBody::createEdgeBox(l_tileSprite->getContentSize());
l_tileSpriteBody->setGravityEnable(false);
l_tileSpriteBody->setContactTestBitmask(GROUND_BIT_MASK);
l_tileSprite->setPhysicsBody(l_tileSpriteBody);
}
}
}
return true;