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