objective-c - 如何手动改变 body 的特征?

标签 objective-c ios cocos2d-iphone box2d textures

我有一些可以成长的 body 。我将这个 body 添加到世界中。

...
someBody = world->CreateBody(&bodyDef);
someFixture = tapBody->CreateFixture(&someFixtureDef);
...

我想我不需要在这里粘贴所有代码。

所以我给世界添加了 body 。问题是如何改变位置,恢复原状……已经在世界上的 body ?我可以在这里这样做吗? (因为当我尝试更改 tick 方法中的某些内容时出现错误)。

-(void) tick: (ccTime) dt
{
    world->Step(dt, velocityIterations, positionIterations);
    for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
    {

    }
}

最佳答案

也许您可以通过销毁并创建一个新的夹具来完成您需要的,而不是销毁并重新创建整个主体...

for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{
    // This assumes you only have one fixture
    b2Fixture* f = b->GetFixtureList();
    f = f->GetNext();

    // Code here to create a new fixture/shape with different size (or whatever)

    // Destory old fixture and create new one
    b->DestoryFixture(f);
    b2Fixture* someFixture = b->CreateFixture(&someFixtureDef);

}

抱歉有任何打字错误......还没有测试过任何......

关于objective-c - 如何手动改变 body 的特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352068/

相关文章:

iphone - 从 NSMutableArray 中删除对象时崩溃

objective-c - 关于如何在 cocos2d 中制作排行榜和成就的任何教程

cocos2d-iphone - 如何确定 Sprite 是否在图层中

ios - 如何进行经过身份验证的服务调用

ios - 如何 Hook ios 连接更改

objective-c - cocos2d 或 cocos3d 是否需要购买任何许可证或它是免费软件?

ios - 尝试处理来自 UITableView 单元格中 UIButton 的点击事件会导致无效的选择器错误

objective-c - 如何在类文件中创建然后销毁 UIWebView

ios - 找不到 Xcode 链接的项目头文件

objective-c - "relay"委托(delegate)协议(protocol)在 Objective-C 中是不好的做法吗?