我真的坚持用 Box2D 实现包装世界。我想创建从左侧出现的游戏对象,当它隐藏到右侧时,反之亦然,自上而下也是如此。
我的想法是使用包含具有 9 个元素的 NSArray 的对象作为叠加矩阵(当对象同时存在于不同位置时,它是一种量子状态,不是吗?)。
每个元素都必须包含主体。它涵盖了所有情况,对我来说有更清晰的逻辑。例如,如果我的对象不接触任何边缘,它只包含一个“中心”主体(第 4 个元素)。如果它触及右边缘,我将“左扭曲”主体添加到第三个元素。
主要问题是在不增加世界的情况下创造身体。首先,我必须将它添加到数组中,然后安全地处理添加到
world->Step();
例如……在碰撞逻辑中(伪代码)
[self.bodies addObjectAtIndex:index] = [self masterBody];
在哪里
-(b2Body*)masterBody;
返回对象主体的模板(主副本)。但是我不能写这个方法,因为只有一个
world->CreateBody(&bodyDef);
方法,我必须用它来创建固定装置。
我只能单独创建身体的定义,但如果不将其添加到世界,就无法进行完整的创建(带有固定装置)。但是添加到世界必须在物理步骤之外进行处理。
有任何想法吗?使用单独的世界来存储每个游戏对象的模板主体?