【发布时间】:2016-03-02 02:04:32
【问题描述】:
我目前正在尝试结合 cocos2d-x 中内置的 PhysicsBody 和 TileMap 类来为我的基于物理的侧滚轮创建关卡(墙)。我有大小为 80*24 的贴图,每个贴图为 30*30 像素大 - 我需要为每个贴图分配一个静态的盒形物理体。
for (int x=0; x < 80; x++) //width of map
{
for (int y = 0; y < 24; y++) //height of map
{
auto spriteTile = wallLayer->getTileAt(Vec2(x,y));
if (spriteTile != NULL)
{
PhysicsBody* tilePhysics = PhysicsBody::createBox(Size(30.0f, 30.0f), PhysicsMaterial(1.0f, 1.0f, 0.0f));
tilePhysics->setDynamic(false); //static is good enough for walls
spriteTile->setPhysicsBody(tilePhysics);
}
}
}
上面的代码可以工作,但速度很慢,并且性能从 60 fps 下降到 20 fps 左右。有没有更简单的蛮力方法,可以更有效地创建物理体?注意:大部分地图都是空白的,所以我不认为主体/瓷砖的数量是主要问题。
任何见解都会有所帮助,谢谢
【问题讨论】:
标签: c++ cocos2d-x game-physics tile